// $ANTLR 3.5.2 PLSQLCommons.g 2021-02-01 17:25:20

/**
 * Oracle(c) PL/SQL 11g Parser  
 *
 * Copyright (c) 2009-2011 Alexandre Porcelli <alexandre.porcelli@gmail.com>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package br.com.porcelli.parser.plsql;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;

import org.antlr.runtime.tree.*;


/**
 * Oracle(c) PL/SQL 11g Parser  
 *
 * Copyright (c) 2009-2011 Alexandre Porcelli <alexandre.porcelli@gmail.com>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
@SuppressWarnings("all")
public class PLSQLParser_PLSQLCommons extends Parser {
	public static final int EOF=-1;
	public static final int AMPERSAND=4;
	public static final int APPROXIMATE_NUM_LIT=5;
	public static final int ASSIGN_OP=6;
	public static final int ASTERISK=7;
	public static final int AT_SIGN=8;
	public static final int BINDVAR=9;
	public static final int BIT_STRING_LIT=10;
	public static final int CARRET_OPERATOR_PART=11;
	public static final int CHAR_STRING=12;
	public static final int CHAR_STRING_PERL=13;
	public static final int COLON=14;
	public static final int COMMA=15;
	public static final int COMMENT=16;
	public static final int CONCATENATION_OP=17;
	public static final int DELIMITED_ID=18;
	public static final int DOUBLE_ASTERISK=19;
	public static final int DOUBLE_PERIOD=20;
	public static final int EQUALS_OP=21;
	public static final int EXACT_NUM_LIT=22;
	public static final int EXCLAMATION_OPERATOR_PART=23;
	public static final int FOR_NOTATION=24;
	public static final int GREATER_THAN_OP=25;
	public static final int GREATER_THAN_OR_EQUALS_OP=26;
	public static final int HEX_STRING_LIT=27;
	public static final int INTRODUCER=28;
	public static final int LEFT_BRACKET=29;
	public static final int LEFT_PAREN=30;
	public static final int LESS_THAN_OP=31;
	public static final int LESS_THAN_OR_EQUALS_OP=32;
	public static final int MINUS_SIGN=33;
	public static final int NATIONAL_CHAR_STRING_LIT=34;
	public static final int NEWLINE=35;
	public static final int NOT_EQUAL_OP=36;
	public static final int PERCENT=37;
	public static final int PERIOD=38;
	public static final int PLSQL_NON_RESERVED_CAST=39;
	public static final int PLSQL_NON_RESERVED_CONNECT_BY_ROOT=40;
	public static final int PLSQL_NON_RESERVED_ELSIF=41;
	public static final int PLSQL_NON_RESERVED_MODEL=42;
	public static final int PLSQL_NON_RESERVED_MULTISET=43;
	public static final int PLSQL_NON_RESERVED_PIVOT=44;
	public static final int PLSQL_NON_RESERVED_UNPIVOT=45;
	public static final int PLSQL_NON_RESERVED_USING=46;
	public static final int PLSQL_RESERVED_CLUSTERS=47;
	public static final int PLSQL_RESERVED_COLAUTH=48;
	public static final int PLSQL_RESERVED_COMPRESS=49;
	public static final int PLSQL_RESERVED_CRASH=50;
	public static final int PLSQL_RESERVED_EXCLUSIVE=51;
	public static final int PLSQL_RESERVED_IDENTIFIED=52;
	public static final int PLSQL_RESERVED_IF=53;
	public static final int PLSQL_RESERVED_INDEX=54;
	public static final int PLSQL_RESERVED_INDEXES=55;
	public static final int PLSQL_RESERVED_LOCK=56;
	public static final int PLSQL_RESERVED_MINUS=57;
	public static final int PLSQL_RESERVED_MODE=58;
	public static final int PLSQL_RESERVED_NOCOMPRESS=59;
	public static final int PLSQL_RESERVED_NOWAIT=60;
	public static final int PLSQL_RESERVED_RESOURCE=61;
	public static final int PLSQL_RESERVED_SHARE=62;
	public static final int PLSQL_RESERVED_START=63;
	public static final int PLSQL_RESERVED_TABAUTH=64;
	public static final int PLSQL_RESERVED_VIEWS=65;
	public static final int PLUS_SIGN=66;
	public static final int PROMPT=67;
	public static final int QS_ANGLE=68;
	public static final int QS_BRACE=69;
	public static final int QS_BRACK=70;
	public static final int QS_OTHER=71;
	public static final int QS_OTHER_CH=72;
	public static final int QS_PAREN=73;
	public static final int QUESTION_MARK=74;
	public static final int QUOTE=75;
	public static final int REGULAR_ID=76;
	public static final int RIGHT_BRACKET=77;
	public static final int RIGHT_PAREN=78;
	public static final int SEMICOLON=79;
	public static final int SEPARATOR=80;
	public static final int SIMPLE_LETTER=81;
	public static final int SOLIDUS=82;
	public static final int SPACE=83;
	public static final int SQL92_RESERVED_ALL=84;
	public static final int SQL92_RESERVED_ALTER=85;
	public static final int SQL92_RESERVED_AND=86;
	public static final int SQL92_RESERVED_ANY=87;
	public static final int SQL92_RESERVED_AS=88;
	public static final int SQL92_RESERVED_ASC=89;
	public static final int SQL92_RESERVED_BEGIN=90;
	public static final int SQL92_RESERVED_BETWEEN=91;
	public static final int SQL92_RESERVED_BY=92;
	public static final int SQL92_RESERVED_CASE=93;
	public static final int SQL92_RESERVED_CHECK=94;
	public static final int SQL92_RESERVED_CONNECT=95;
	public static final int SQL92_RESERVED_CREATE=96;
	public static final int SQL92_RESERVED_CURRENT=97;
	public static final int SQL92_RESERVED_CURSOR=98;
	public static final int SQL92_RESERVED_DATE=99;
	public static final int SQL92_RESERVED_DECLARE=100;
	public static final int SQL92_RESERVED_DEFAULT=101;
	public static final int SQL92_RESERVED_DELETE=102;
	public static final int SQL92_RESERVED_DESC=103;
	public static final int SQL92_RESERVED_DISTINCT=104;
	public static final int SQL92_RESERVED_DROP=105;
	public static final int SQL92_RESERVED_ELSE=106;
	public static final int SQL92_RESERVED_END=107;
	public static final int SQL92_RESERVED_EXCEPTION=108;
	public static final int SQL92_RESERVED_EXISTS=109;
	public static final int SQL92_RESERVED_FALSE=110;
	public static final int SQL92_RESERVED_FETCH=111;
	public static final int SQL92_RESERVED_FOR=112;
	public static final int SQL92_RESERVED_FROM=113;
	public static final int SQL92_RESERVED_GOTO=114;
	public static final int SQL92_RESERVED_GRANT=115;
	public static final int SQL92_RESERVED_GROUP=116;
	public static final int SQL92_RESERVED_HAVING=117;
	public static final int SQL92_RESERVED_IN=118;
	public static final int SQL92_RESERVED_INSERT=119;
	public static final int SQL92_RESERVED_INTERSECT=120;
	public static final int SQL92_RESERVED_INTO=121;
	public static final int SQL92_RESERVED_IS=122;
	public static final int SQL92_RESERVED_LIKE=123;
	public static final int SQL92_RESERVED_NOT=124;
	public static final int SQL92_RESERVED_NULL=125;
	public static final int SQL92_RESERVED_OF=126;
	public static final int SQL92_RESERVED_ON=127;
	public static final int SQL92_RESERVED_OPTION=128;
	public static final int SQL92_RESERVED_OR=129;
	public static final int SQL92_RESERVED_ORDER=130;
	public static final int SQL92_RESERVED_OVERLAPS=131;
	public static final int SQL92_RESERVED_PRIOR=132;
	public static final int SQL92_RESERVED_PROCEDURE=133;
	public static final int SQL92_RESERVED_PUBLIC=134;
	public static final int SQL92_RESERVED_REVOKE=135;
	public static final int SQL92_RESERVED_SELECT=136;
	public static final int SQL92_RESERVED_SIZE=137;
	public static final int SQL92_RESERVED_TABLE=138;
	public static final int SQL92_RESERVED_THE=139;
	public static final int SQL92_RESERVED_THEN=140;
	public static final int SQL92_RESERVED_TO=141;
	public static final int SQL92_RESERVED_TRUE=142;
	public static final int SQL92_RESERVED_UNION=143;
	public static final int SQL92_RESERVED_UNIQUE=144;
	public static final int SQL92_RESERVED_UPDATE=145;
	public static final int SQL92_RESERVED_VALUES=146;
	public static final int SQL92_RESERVED_VIEW=147;
	public static final int SQL92_RESERVED_WHEN=148;
	public static final int SQL92_RESERVED_WHERE=149;
	public static final int SQL92_RESERVED_WITH=150;
	public static final int TILDE_OPERATOR_PART=151;
	public static final int UNDERSCORE=152;
	public static final int UNSIGNED_INTEGER=153;
	public static final int VERTICAL_BAR=154;
	public static final int ZV=155;
	public static final int ADD_VK=156;
	public static final int AFTER_EACH_ROW=157;
	public static final int AFTER_STATEMENT=158;
	public static final int AFTER_VK=159;
	public static final int AGENT_VK=160;
	public static final int AGGREGATE_VK=161;
	public static final int ALIAS=162;
	public static final int ALTER_ATTRIBUTE=163;
	public static final int ALTER_COLLECTION=164;
	public static final int ALTER_FUNCTION=165;
	public static final int ALTER_METHOD=166;
	public static final int ALTER_METHOD_ELEMENT=167;
	public static final int ALTER_PACKAGE=168;
	public static final int ALTER_PROCEDURE=169;
	public static final int ALTER_SEQUENCE=170;
	public static final int ALTER_TRIGGER=171;
	public static final int ALTER_TYPE=172;
	public static final int ANALYZE_VK=173;
	public static final int ANY_ELEMENT=174;
	public static final int ANY_MODE=175;
	public static final int ARGUMENT=177;
	public static final int ARGUMENTS=178;
	public static final int ASSIGN=179;
	public static final int ASSOCIATE_VK=180;
	public static final int ATTRIBUTE=182;
	public static final int ATTRIBUTES=183;
	public static final int ATTRIBUTE_NAME=184;
	public static final int AT_VK=186;
	public static final int AUDIT_VK=187;
	public static final int AUTHID_VK=188;
	public static final int AUTOMATIC_VK=189;
	public static final int AUTONOMOUS_TRANSACTION_VK=190;
	public static final int AUTO_VK=191;
	public static final int BATCH_VK=192;
	public static final int BEFORE_EACH_ROW=193;
	public static final int BEFORE_STATEMENT=194;
	public static final int BEFORE_VK=195;
	public static final int BFILE_VK=196;
	public static final int BINARY_DOUBLE_VK=197;
	public static final int BINARY_FLOAT_VK=198;
	public static final int BINARY_INTEGER_VK=199;
	public static final int BIT_VK=201;
	public static final int BLOB_VK=202;
	public static final int BLOCK=203;
	public static final int BLOCK_VK=204;
	public static final int BODY=205;
	public static final int BODY_MODE=206;
	public static final int BODY_VK=207;
	public static final int BOOLEAN_VK=208;
	public static final int BOTH_VK=209;
	public static final int BREADTH_VK=210;
	public static final int BULK_VK=211;
	public static final int BYTE_VK=212;
	public static final int CACHE_VK=213;
	public static final int CALL_MODE=214;
	public static final int CALL_VK=215;
	public static final int CANONICAL_VK=216;
	public static final int CASCADE_VK=218;
	public static final int CASCATED_ELEMENT=219;
	public static final int CAST_VK=220;
	public static final int CHARACTER_VK=221;
	public static final int CHAR_CS_VK=222;
	public static final int CHAR_SET_NAME=223;
	public static final int CHAR_VK=226;
	public static final int CHR_VK=227;
	public static final int CLOB_VK=228;
	public static final int CLOSE_VK=229;
	public static final int CLUSTER_VK=230;
	public static final int COLLECTION_MODE=231;
	public static final int COLLECTION_NAME=232;
	public static final int COLLECT_VK=233;
	public static final int COLUMNS=235;
	public static final int COLUMN_NAME=236;
	public static final int COMMENT_VK=238;
	public static final int COMMITTED_VK=239;
	public static final int COMMIT_VK=240;
	public static final int COMPATIBILITY_VK=241;
	public static final int COMPILATION_UNIT=242;
	public static final int COMPILER_PARAMETER=243;
	public static final int COMPILE_VK=244;
	public static final int COMPOUND_DML=245;
	public static final int COMPOUND_VK=246;
	public static final int CONDITIONAL_INSERT=248;
	public static final int CONSTANT_VK=249;
	public static final int CONSTRAINT_NAME=250;
	public static final int CONSTRUCTOR_SPEC=251;
	public static final int CONSTRUCTOR_VK=252;
	public static final int CONTENT_VK=253;
	public static final int CONTEXT_VK=254;
	public static final int CONTINUE_VK=255;
	public static final int CONVERT_VK=256;
	public static final int CORRUPT_XID_ALL_VK=257;
	public static final int CORRUPT_XID_VK=258;
	public static final int COST_CLASS_NAME=259;
	public static final int COST_VK=260;
	public static final int COUNT_VK=261;
	public static final int CREATE_FUNCTION=262;
	public static final int CREATE_PACKAGE_BODY=263;
	public static final int CREATE_PACKAGE_SPEC=264;
	public static final int CREATE_PROCEDURE=265;
	public static final int CREATE_SEQUENCE=266;
	public static final int CREATE_TRIGGER=267;
	public static final int CREATE_TYPE_BODY=268;
	public static final int CREATE_TYPE_SPEC=269;
	public static final int CROSS_VK=270;
	public static final int CUBE_VK=271;
	public static final int CURRENT_USER_VK=272;
	public static final int CURRENT_VK=273;
	public static final int CURSOR_BASED_FOR=274;
	public static final int CURSOR_DECLARE=275;
	public static final int CURSOR_NAME=276;
	public static final int CUSTOMDATUM_VK=277;
	public static final int CUSTOM_TYPE=278;
	public static final int CYCLE_VK=279;
	public static final int C_VK=280;
	public static final int DATABASE_VK=281;
	public static final int DATETIME_OP=282;
	public static final int DAY_VK=283;
	public static final int DBTIMEZONE_VK=284;
	public static final int DB_ROLE_CHANGE_VK=285;
	public static final int DDL_VK=286;
	public static final int DEBUG_VK=287;
	public static final int DECIMAL_VK=288;
	public static final int DECOMPOSE_VK=289;
	public static final int DECREMENT_VK=290;
	public static final int DEC_VK=291;
	public static final int DEFAULTS_VK=292;
	public static final int DEFAULT_VALUE=293;
	public static final int DEFERRED_VK=294;
	public static final int DEFINER_VK=295;
	public static final int DENSE_RANK_VK=297;
	public static final int DEPENDENT_HANDLING=298;
	public static final int DEPTH_VK=299;
	public static final int DETERMINISTIC_VK=300;
	public static final int DIMENSION_VK=301;
	public static final int DIRECT_MODE=302;
	public static final int DISABLE_VK=303;
	public static final int DISASSOCIATE_VK=304;
	public static final int DML_EVENT=305;
	public static final int DML_EVENT_ELEMENT=306;
	public static final int DOCUMENT_VK=307;
	public static final int DOT_ASTERISK=308;
	public static final int DOUBLE_VK=309;
	public static final int DROP_FUNCTION=310;
	public static final int DROP_PACKAGE=311;
	public static final int DROP_PROCEDURE=312;
	public static final int DROP_SEQUENCE=313;
	public static final int DROP_TRIGGER=314;
	public static final int DROP_TYPE=315;
	public static final int DSINTERVAL_UNCONSTRAINED_VK=316;
	public static final int DYNAMIC_RETURN=317;
	public static final int ELEMENT=318;
	public static final int ELEMENTS_MODE=319;
	public static final int ELEMENT_SPEC=320;
	public static final int ENABLE_VK=321;
	public static final int ENCODING_VK=322;
	public static final int ENTITYESCAPING_VK=323;
	public static final int EVALNAME_VK=325;
	public static final int EXCEPTIONS_VK=327;
	public static final int EXCEPTION_DECLARE=328;
	public static final int EXCEPTION_INIT_VK=329;
	public static final int EXCEPTION_NAME=330;
	public static final int EXCLUDE_VK=332;
	public static final int EXECUTE_VK=333;
	public static final int EXIT_VK=334;
	public static final int EXPLAIN_STATEMENT=335;
	public static final int EXPR=336;
	public static final int EXPR_LIST=337;
	public static final int EXTERNAL_MODE=338;
	public static final int EXTERNAL_VK=339;
	public static final int EXTRACT_VK=340;
	public static final int FACTORING=341;
	public static final int FIELDS=342;
	public static final int FIELD_SPEC=343;
	public static final int FINAL_VK=344;
	public static final int FIRST_VALUE_VK=345;
	public static final int FIRST_VK=346;
	public static final int FLOAT_VK=347;
	public static final int FOLLOWING_VK=348;
	public static final int FOLLOWS_VK=349;
	public static final int FORALL_VK=350;
	public static final int FORCE_VK=351;
	public static final int FOR_EACH_ROW=352;
	public static final int FOR_LOOP=353;
	public static final int FOR_MULTI_COLUMN=354;
	public static final int FOR_SINGLE_COLUMN=355;
	public static final int FULL_VK=356;
	public static final int FUNCTION_ENABLING_OVER=357;
	public static final int FUNCTION_ENABLING_USING=358;
	public static final int FUNCTION_ENABLING_WITHIN_OR_OVER=359;
	public static final int FUNCTION_NAME=360;
	public static final int FUNCTION_SPEC=361;
	public static final int GROUPING_VK=364;
	public static final int GROUPIN_SET=365;
	public static final int GROUP_BY_CLAUSE=366;
	public static final int GROUP_BY_ELEMENT=367;
	public static final int HASH_VK=368;
	public static final int HIDE_VK=369;
	public static final int HIERARCHICAL=370;
	public static final int HOSTED_VARIABLE=371;
	public static final int HOSTED_VARIABLE_NAME=372;
	public static final int HOSTED_VARIABLE_ROUTINE_CALL=373;
	public static final int HOUR_VK=374;
	public static final int ID=375;
	public static final int IGNORE_VK=376;
	public static final int IMMEDIATE_VK=377;
	public static final int IMPLEMENTATION_TYPE_NAME=378;
	public static final int INCLUDE_VK=379;
	public static final int INCLUDING_VK=380;
	public static final int INCREMENT_VK=381;
	public static final int INDENT_VK=382;
	public static final int INDEXED_BY=383;
	public static final int INDEXED_FOR=384;
	public static final int INDEX_NAME=385;
	public static final int INDICES_BOUND=386;
	public static final int INLINE_VK=387;
	public static final int INNER_VK=388;
	public static final int INOUT_VK=389;
	public static final int INSTANTIABLE_VK=390;
	public static final int INSTEAD_VK=391;
	public static final int INTEGER_VK=392;
	public static final int INTERVAL_DATATYPE=393;
	public static final int INT_VK=395;
	public static final int INVALIDATE_VK=396;
	public static final int ISOLATION_VK=397;
	public static final int IS_A_SET=398;
	public static final int IS_EMPTY=399;
	public static final int IS_INFINITE=400;
	public static final int IS_NAN=401;
	public static final int IS_NOT_A_SET=402;
	public static final int IS_NOT_EMPTY=403;
	public static final int IS_NOT_INFINITE=404;
	public static final int IS_NOT_NAN=405;
	public static final int IS_NOT_NULL=406;
	public static final int IS_NOT_OF_TYPE=407;
	public static final int IS_NOT_PRESENT=408;
	public static final int IS_NULL=409;
	public static final int IS_OF_TYPE=410;
	public static final int IS_PRESENT=411;
	public static final int ITERATE_VK=412;
	public static final int JAVA_VK=413;
	public static final int JOIN_DEF=414;
	public static final int KEEP_VK=415;
	public static final int LABEL_DECLARE=416;
	public static final int LABEL_NAME=417;
	public static final int LANGUAGE_VK=418;
	public static final int LAST_VALUE_VK=419;
	public static final int LAST_VK=420;
	public static final int LEADING_VK=421;
	public static final int LEFT_VK=424;
	public static final int LIBRARY_VK=427;
	public static final int LIKE2_VK=428;
	public static final int LIKE4_VK=429;
	public static final int LIKEC_VK=430;
	public static final int LIMIT_VK=431;
	public static final int LINK_NAME=432;
	public static final int LOCAL_VK=433;
	public static final int LOCK_TABLE_ELEMENT=434;
	public static final int LOGIC_EXPR=435;
	public static final int LOGOFF_VK=436;
	public static final int LOGON_VK=437;
	public static final int LOG_VK=438;
	public static final int LONG_VK=439;
	public static final int LOOP_VK=440;
	public static final int MAIN_MODEL=441;
	public static final int MAIN_MODEL_NAME=442;
	public static final int MAP_VK=443;
	public static final int MAXVALUE_VK=444;
	public static final int MEASURES_VK=445;
	public static final int MEMBER_VK=446;
	public static final int MERGE_INSERT=447;
	public static final int MERGE_UPDATE=448;
	public static final int MERGE_VK=449;
	public static final int MINUTE_VK=451;
	public static final int MINVALUE_VK=452;
	public static final int MLSLABEL_VK=453;
	public static final int MODEL_COLUMN=454;
	public static final int MODEL_COLUMNS=455;
	public static final int MODEL_EXPRESSION=456;
	public static final int MODEL_RULE=457;
	public static final int MODEL_RULES=458;
	public static final int MODIFIER=459;
	public static final int MODIFY_VK=460;
	public static final int MONTH_VK=461;
	public static final int MULTI_TABLE_MODE=462;
	public static final int NAME_VK=463;
	public static final int NATIVE_DATATYPE=465;
	public static final int NATURALN_VK=466;
	public static final int NATURAL_VK=467;
	public static final int NAV_VK=468;
	public static final int NCHAR_CS_VK=469;
	public static final int NCHAR_VK=470;
	public static final int NCLOB_VK=471;
	public static final int NESTED_TABLE_TYPE_DEF=472;
	public static final int NESTED_VK=473;
	public static final int NEW_VK=474;
	public static final int NOAUDIT_VK=475;
	public static final int NOCACHE_VK=476;
	public static final int NOCOPY_VK=477;
	public static final int NOCYCLE_VK=478;
	public static final int NOENTITYESCAPING_VK=479;
	public static final int NOMAXVALUE_VK=480;
	public static final int NOMINVALUE_VK=481;
	public static final int NON_DML=482;
	public static final int NOORDER_VK=483;
	public static final int NOSCHEMACHECK_VK=484;
	public static final int NOT_BETWEEN=485;
	public static final int NOT_IN=487;
	public static final int NOT_LIKE=488;
	public static final int NO_VK=489;
	public static final int NULLS_VK=490;
	public static final int NUMBER_VK=491;
	public static final int NUMERIC_VK=492;
	public static final int NVARCHAR2_VK=493;
	public static final int OBJECT_AS=494;
	public static final int OBJECT_MEMBERS=495;
	public static final int OBJECT_TYPE_DEF=496;
	public static final int OBJECT_VK=497;
	public static final int OFF_VK=498;
	public static final int OLD_VK=499;
	public static final int ONLY_VK=500;
	public static final int OPEN_VK=501;
	public static final int ORADATA_VK=502;
	public static final int ORDER_BY_ELEMENT=503;
	public static final int ORDER_BY_ELEMENTS=504;
	public static final int ORDINALITY_VK=505;
	public static final int OUT_VK=506;
	public static final int OVERRIDING_VK=507;
	public static final int OVER_VK=508;
	public static final int PACKAGE_NAME=509;
	public static final int PACKAGE_VK=510;
	public static final int PARALLEL_ENABLE_VK=511;
	public static final int PARAMETER=512;
	public static final int PARAMETERS=513;
	public static final int PARAMETERS_VK=514;
	public static final int PARAMETER_NAME=515;
	public static final int PARENT_VK=516;
	public static final int PARTITION_VK=517;
	public static final int PASSING_VK=518;
	public static final int PERCENT_FOUND_VK=520;
	public static final int PERCENT_ISOPEN_VK=521;
	public static final int PERCENT_NOTFOUND_VK=522;
	public static final int PERCENT_ROWCOUNT_VK=523;
	public static final int PERCENT_ROWTYPE_VK=524;
	public static final int PERCENT_TYPE_VK=525;
	public static final int PIPELINED_VK=527;
	public static final int PIVOT_ALIAS=528;
	public static final int PIVOT_ELEMENT=529;
	public static final int PIVOT_IN_ELEMENT=530;
	public static final int PIVOT_VK=531;
	public static final int PLS_INTEGER_VK=548;
	public static final int POSITIVEN_VK=550;
	public static final int POSITIVE_VK=551;
	public static final int PRAGMA_DECLARE=552;
	public static final int PRAGMA_VK=553;
	public static final int PRECEDING_VK=554;
	public static final int PRECISION=555;
	public static final int PRECISION_VK=556;
	public static final int PREDICTION_FUNCTION=557;
	public static final int PROCEDURE_NAME=558;
	public static final int PROCEDURE_SPEC=559;
	public static final int QUERY_NAME=561;
	public static final int RAISE_VK=562;
	public static final int RANGE_VK=563;
	public static final int RAW_VK=564;
	public static final int READ_VK=565;
	public static final int REAL_VK=566;
	public static final int RECORD_NAME=567;
	public static final int RECORD_TYPE_DECLARE=568;
	public static final int RECORD_VAR_DECLARE=569;
	public static final int REFERENCE_MODEL_NAME=570;
	public static final int REFERENCE_VK=571;
	public static final int REFERENCING_VK=572;
	public static final int REF_VK=573;
	public static final int REJECT_VK=575;
	public static final int RELIES_ON_VK=576;
	public static final int RENAME_VK=577;
	public static final int REPLACE_VK=578;
	public static final int RESPECT_VK=579;
	public static final int RESTRICT_REFERENCES_VK=580;
	public static final int RESULT_CACHE_VK=581;
	public static final int RETURN_VK=582;
	public static final int REUSE_VK=583;
	public static final int REVERSE_VK=584;
	public static final int RIGHT_VK=587;
	public static final int ROLLBACK_SEGMENT_NAME=588;
	public static final int ROLLBACK_VK=589;
	public static final int ROLLUP_VK=590;
	public static final int ROUTINE_CALL=591;
	public static final int ROUTINE_NAME=592;
	public static final int ROWID_VK=593;
	public static final int ROWS_VK=594;
	public static final int ROW_VK=595;
	public static final int RULES_VK=596;
	public static final int SAMPLE_VK=597;
	public static final int SAVEPOINT_NAME=598;
	public static final int SAVEPOINT_VK=599;
	public static final int SCHEMACHECK_VK=600;
	public static final int SCHEMA_NAME=601;
	public static final int SCHEMA_VK=602;
	public static final int SCN_VK=603;
	public static final int SEARCHED_CASE=604;
	public static final int SEARCH_VK=605;
	public static final int SECOND_VK=606;
	public static final int SEED_VK=607;
	public static final int SELECTED_TABLEVIEW=608;
	public static final int SELECT_BASED_FOR=609;
	public static final int SELECT_ITEM=610;
	public static final int SELECT_LIST=611;
	public static final int SELECT_MODE=612;
	public static final int SELECT_STATEMENT=613;
	public static final int SELF_VK=614;
	public static final int SEQUENCE_NAME=616;
	public static final int SEQUENCE_VK=617;
	public static final int SEQUENTIAL_VK=618;
	public static final int SERIALIZABLE_VK=619;
	public static final int SERIALLY_REUSABLE_VK=620;
	public static final int SERVERERROR_VK=621;
	public static final int SESSIONTIMEZONE_VK=622;
	public static final int SET_CONSTRAINT=623;
	public static final int SET_SERVEROUTPUT=624;
	public static final int SET_TRANSACTION=625;
	public static final int SET_VK=626;
	public static final int SHOW_VK=627;
	public static final int SHUTDOWN_VK=628;
	public static final int SIBLINGS_VK=629;
	public static final int SIGNTYPE_VK=630;
	public static final int SIMPLE_BOUND=631;
	public static final int SIMPLE_CASE=632;
	public static final int SIMPLE_DML=633;
	public static final int SIMPLE_INTEGER_VK=634;
	public static final int SINGLE_TABLE_MODE=635;
	public static final int SINGLE_VK=636;
	public static final int SKIP_VK=637;
	public static final int SMALLINT_VK=638;
	public static final int SOME_VK=640;
	public static final int SPECIFICATION_VK=641;
	public static final int SQLDATA_VK=706;
	public static final int SQL_SCRIPT=707;
	public static final int STANDALONE_VK=708;
	public static final int STANDARD_FUNCTION=709;
	public static final int STARTUP_VK=710;
	public static final int STATEMENTS=711;
	public static final int STATIC_RETURNING=712;
	public static final int STATIC_VK=713;
	public static final int STATISTICS_VK=714;
	public static final int STREAMING_CLAUSE=715;
	public static final int STRING_VK=716;
	public static final int SUBMULTISET_VK=717;
	public static final int SUBPARTITION_VK=718;
	public static final int SUBQUERY=719;
	public static final int SUBTYPE_DECLARE=720;
	public static final int SUSPEND_VK=721;
	public static final int TABLEVIEW_NAME=722;
	public static final int TABLE_ELEMENT=723;
	public static final int TABLE_EXPRESSION=724;
	public static final int TABLE_REF=725;
	public static final int TABLE_REF_ELEMENT=726;
	public static final int TABLE_TYPE_DECLARE=727;
	public static final int TABLE_VAR_DECLARE=728;
	public static final int TABLE_VAR_NAME=729;
	public static final int THREE_DOTS=730;
	public static final int TIMESTAMP_LTZ_UNCONSTRAINED_VK=731;
	public static final int TIMESTAMP_TZ_UNCONSTRAINED_VK=732;
	public static final int TIMESTAMP_UNCONSTRAINED_VK=733;
	public static final int TIMESTAMP_VK=734;
	public static final int TIMEZONE_ABBR_VK=735;
	public static final int TIMEZONE_HOUR_VK=736;
	public static final int TIMEZONE_MINUTE_VK=737;
	public static final int TIMEZONE_REGION_VK=738;
	public static final int TIME_VK=739;
	public static final int TRAILING_VK=740;
	public static final int TRANSLATE_VK=741;
	public static final int TREAT_VK=742;
	public static final int TRIGGER_NAME=743;
	public static final int TRIM_VK=744;
	public static final int TRUNCATE_VK=745;
	public static final int TYPE_BODY_ELEMENTS=746;
	public static final int TYPE_NAME=747;
	public static final int TYPE_VK=748;
	public static final int UNARY_OPERATOR=749;
	public static final int UNBOUNDED_VK=750;
	public static final int UNDER_VK=751;
	public static final int UNLIMITED_VK=752;
	public static final int UNPIVOT_IN_ELEMENT=753;
	public static final int UNPIVOT_VK=754;
	public static final int UNTIL_VK=756;
	public static final int UPDATED_VK=757;
	public static final int UPSERT_VK=758;
	public static final int UROWID_VK=759;
	public static final int USING_MODE=760;
	public static final int VALIDATE_VK=761;
	public static final int VALUES_BOUND=762;
	public static final int VALUE_VK=763;
	public static final int VARCHAR2_VK=764;
	public static final int VARCHAR_VK=765;
	public static final int VARIABLE_DECLARE=766;
	public static final int VARIABLE_NAME=767;
	public static final int VARR_ARRAY_DEF=768;
	public static final int VECTOR_EXPR=769;
	public static final int VERSIONS_VK=770;
	public static final int VERSION_VK=771;
	public static final int WAIT_VK=773;
	public static final int WELLFORMED_VK=774;
	public static final int WHILE_LOOP=775;
	public static final int WITHIN_VK=776;
	public static final int WORK_VK=777;
	public static final int WRITE_VK=778;
	public static final int XMLAGG_VK=779;
	public static final int XMLATTRIBUTES_VK=780;
	public static final int XMLCAST_VK=781;
	public static final int XMLCOLATTVAL_VK=782;
	public static final int XMLELEMENT_VK=783;
	public static final int XMLEXISTS_VK=784;
	public static final int XMLFOREST_VK=785;
	public static final int XMLNAMESPACES_VK=786;
	public static final int XMLPARSE_VK=787;
	public static final int XMLPI_VK=788;
	public static final int XMLQUERY_VK=789;
	public static final int XMLROOT_VK=790;
	public static final int XMLSERIALIZE_VK=791;
	public static final int XMLTABLE_VK=792;
	public static final int XML_ALIAS=793;
	public static final int XML_COLUMN=794;
	public static final int XML_COLUMN_NAME=795;
	public static final int XML_ELEMENT=796;
	public static final int XML_VK=797;
	public static final int YEAR_VK=798;
	public static final int YES_VK=799;
	public static final int YMINTERVAL_UNCONSTRAINED_VK=800;

	// delegates
	public Parser[] getDelegates() {
		return new Parser[] {};
	}

	// delegators
	public PLSQLParser gPLSQLParser;
	public PLSQLParser gParent;


	public PLSQLParser_PLSQLCommons(TokenStream input, PLSQLParser gPLSQLParser) {
		this(input, new RecognizerSharedState(), gPLSQLParser);
	}
	public PLSQLParser_PLSQLCommons(TokenStream input, RecognizerSharedState state, PLSQLParser gPLSQLParser) {
		super(input, state);
		this.gPLSQLParser = gPLSQLParser;
		gParent = gPLSQLParser;
	}

	protected TreeAdaptor adaptor = new CommonTreeAdaptor();

	public void setTreeAdaptor(TreeAdaptor adaptor) {
		this.adaptor = adaptor;
	}
	public TreeAdaptor getTreeAdaptor() {
		return adaptor;
	}
	@Override public String[] getTokenNames() { return PLSQLParser.tokenNames; }
	@Override public String getGrammarFileName() { return "PLSQLCommons.g"; }


	public static class partition_extension_clause_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "partition_extension_clause"
	// PLSQLCommons.g:76:1: partition_extension_clause : ( subpartition_key ^| partition_key ^) ( for_key !)? expression_list ;
	public final PLSQLParser_PLSQLCommons.partition_extension_clause_return partition_extension_clause() throws RecognitionException {
		PLSQLParser_PLSQLCommons.partition_extension_clause_return retval = new PLSQLParser_PLSQLCommons.partition_extension_clause_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope subpartition_key1 =null;
		ParserRuleReturnScope partition_key2 =null;
		ParserRuleReturnScope for_key3 =null;
		ParserRuleReturnScope expression_list4 =null;


		try {
			// PLSQLCommons.g:77:5: ( ( subpartition_key ^| partition_key ^) ( for_key !)? expression_list )
			// PLSQLCommons.g:77:10: ( subpartition_key ^| partition_key ^) ( for_key !)? expression_list
			{
			root_0 = (Object)adaptor.nil();


			// PLSQLCommons.g:77:10: ( subpartition_key ^| partition_key ^)
			int alt1=2;
			int LA1_0 = input.LA(1);
			if ( (LA1_0==REGULAR_ID) && (((input.LT(1).getText().equalsIgnoreCase("subpartition"))||(input.LT(1).getText().equalsIgnoreCase("partition"))))) {
				int LA1_1 = input.LA(2);
				if ( ((input.LT(1).getText().equalsIgnoreCase("subpartition"))) ) {
					alt1=1;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("partition"))) ) {
					alt1=2;
				}

				else {
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 1, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

			}

			switch (alt1) {
				case 1 :
					// PLSQLCommons.g:77:12: subpartition_key ^
					{
					pushFollow(FOLLOW_subpartition_key_in_partition_extension_clause367);
					subpartition_key1=gPLSQLParser.subpartition_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(subpartition_key1.getTree(), root_0);
					}
					break;
				case 2 :
					// PLSQLCommons.g:77:32: partition_key ^
					{
					pushFollow(FOLLOW_partition_key_in_partition_extension_clause372);
					partition_key2=gPLSQLParser.partition_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(partition_key2.getTree(), root_0);
					}
					break;

			}

			// PLSQLCommons.g:78:16: ( for_key !)?
			int alt2=2;
			int LA2_0 = input.LA(1);
			if ( (LA2_0==SQL92_RESERVED_FOR) ) {
				alt2=1;
			}
			switch (alt2) {
				case 1 :
					// PLSQLCommons.g:78:16: for_key !
					{
					pushFollow(FOLLOW_for_key_in_partition_extension_clause386);
					for_key3=gPLSQLParser.for_key();
					state._fsp--;
					if (state.failed) return retval;
					}
					break;

			}

			pushFollow(FOLLOW_expression_list_in_partition_extension_clause390);
			expression_list4=gPLSQLParser.expression_list();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_list4.getTree());

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "partition_extension_clause"


	public static class column_alias_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "column_alias"
	// PLSQLCommons.g:81:1: column_alias options {backtrack=true; } : ( ( as_key )? ( id | alias_quoted_string ) -> ^( ALIAS ( id )? ( alias_quoted_string )? ) | as_key );
	public final PLSQLParser_PLSQLCommons.column_alias_return column_alias() throws RecognitionException {
		PLSQLParser_PLSQLCommons.column_alias_return retval = new PLSQLParser_PLSQLCommons.column_alias_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope as_key5 =null;
		ParserRuleReturnScope id6 =null;
		ParserRuleReturnScope alias_quoted_string7 =null;
		ParserRuleReturnScope as_key8 =null;

		RewriteRuleSubtreeStream stream_as_key=new RewriteRuleSubtreeStream(adaptor,"rule as_key");
		RewriteRuleSubtreeStream stream_alias_quoted_string=new RewriteRuleSubtreeStream(adaptor,"rule alias_quoted_string");
		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:86:5: ( ( as_key )? ( id | alias_quoted_string ) -> ^( ALIAS ( id )? ( alias_quoted_string )? ) | as_key )
			int alt5=2;
			int LA5_0 = input.LA(1);
			if ( (LA5_0==SQL92_RESERVED_AS) ) {
				int LA5_1 = input.LA(2);
				if ( (synpred1_PLSQLCommons()) ) {
					alt5=1;
				}
				else if ( (true) ) {
					alt5=2;
				}

			}
			else if ( ((LA5_0 >= CHAR_STRING && LA5_0 <= CHAR_STRING_PERL)||LA5_0==DELIMITED_ID||LA5_0==INTRODUCER||LA5_0==NATIONAL_CHAR_STRING_LIT||LA5_0==REGULAR_ID) ) {
				alt5=1;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 5, 0, input);
				throw nvae;
			}

			switch (alt5) {
				case 1 :
					// PLSQLCommons.g:86:10: ( as_key )? ( id | alias_quoted_string )
					{
					// PLSQLCommons.g:86:10: ( as_key )?
					int alt3=2;
					int LA3_0 = input.LA(1);
					if ( (LA3_0==SQL92_RESERVED_AS) ) {
						alt3=1;
					}
					switch (alt3) {
						case 1 :
							// PLSQLCommons.g:86:10: as_key
							{
							pushFollow(FOLLOW_as_key_in_column_alias419);
							as_key5=gPLSQLParser.as_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_as_key.add(as_key5.getTree());
							}
							break;

					}

					// PLSQLCommons.g:86:18: ( id | alias_quoted_string )
					int alt4=2;
					int LA4_0 = input.LA(1);
					if ( (LA4_0==DELIMITED_ID||LA4_0==INTRODUCER||LA4_0==REGULAR_ID) ) {
						alt4=1;
					}
					else if ( ((LA4_0 >= CHAR_STRING && LA4_0 <= CHAR_STRING_PERL)||LA4_0==NATIONAL_CHAR_STRING_LIT) ) {
						alt4=2;
					}

					else {
						if (state.backtracking>0) {state.failed=true; return retval;}
						NoViableAltException nvae =
							new NoViableAltException("", 4, 0, input);
						throw nvae;
					}

					switch (alt4) {
						case 1 :
							// PLSQLCommons.g:86:19: id
							{
							pushFollow(FOLLOW_id_in_column_alias423);
							id6=id();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_id.add(id6.getTree());
							}
							break;
						case 2 :
							// PLSQLCommons.g:86:22: alias_quoted_string
							{
							pushFollow(FOLLOW_alias_quoted_string_in_column_alias425);
							alias_quoted_string7=alias_quoted_string();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_alias_quoted_string.add(alias_quoted_string7.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: id, alias_quoted_string
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 87:5: -> ^( ALIAS ( id )? ( alias_quoted_string )? )
					{
						// PLSQLCommons.g:87:11: ^( ALIAS ( id )? ( alias_quoted_string )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ALIAS, "ALIAS"), root_1);
						// PLSQLCommons.g:87:19: ( id )?
						if ( stream_id.hasNext() ) {
							adaptor.addChild(root_1, stream_id.nextTree());
						}
						stream_id.reset();

						// PLSQLCommons.g:87:23: ( alias_quoted_string )?
						if ( stream_alias_quoted_string.hasNext() ) {
							adaptor.addChild(root_1, stream_alias_quoted_string.nextTree());
						}
						stream_alias_quoted_string.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// PLSQLCommons.g:88:10: as_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_as_key_in_column_alias456);
					as_key8=gPLSQLParser.as_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, as_key8.getTree());

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "column_alias"


	public static class table_alias_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "table_alias"
	// PLSQLCommons.g:91:1: table_alias : ( id | alias_quoted_string ) -> ^( ALIAS ( id )? ( alias_quoted_string )? ) ;
	public final PLSQLParser_PLSQLCommons.table_alias_return table_alias() throws RecognitionException {
		PLSQLParser_PLSQLCommons.table_alias_return retval = new PLSQLParser_PLSQLCommons.table_alias_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id9 =null;
		ParserRuleReturnScope alias_quoted_string10 =null;

		RewriteRuleSubtreeStream stream_alias_quoted_string=new RewriteRuleSubtreeStream(adaptor,"rule alias_quoted_string");
		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:92:5: ( ( id | alias_quoted_string ) -> ^( ALIAS ( id )? ( alias_quoted_string )? ) )
			// PLSQLCommons.g:92:10: ( id | alias_quoted_string )
			{
			// PLSQLCommons.g:92:10: ( id | alias_quoted_string )
			int alt6=2;
			int LA6_0 = input.LA(1);
			if ( (LA6_0==DELIMITED_ID||LA6_0==INTRODUCER||LA6_0==REGULAR_ID) ) {
				alt6=1;
			}
			else if ( ((LA6_0 >= CHAR_STRING && LA6_0 <= CHAR_STRING_PERL)||LA6_0==NATIONAL_CHAR_STRING_LIT) ) {
				alt6=2;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 6, 0, input);
				throw nvae;
			}

			switch (alt6) {
				case 1 :
					// PLSQLCommons.g:92:12: id
					{
					pushFollow(FOLLOW_id_in_table_alias478);
					id9=id();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id.add(id9.getTree());
					}
					break;
				case 2 :
					// PLSQLCommons.g:92:17: alias_quoted_string
					{
					pushFollow(FOLLOW_alias_quoted_string_in_table_alias482);
					alias_quoted_string10=alias_quoted_string();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_alias_quoted_string.add(alias_quoted_string10.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: id, alias_quoted_string
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 93:5: -> ^( ALIAS ( id )? ( alias_quoted_string )? )
			{
				// PLSQLCommons.g:93:10: ^( ALIAS ( id )? ( alias_quoted_string )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ALIAS, "ALIAS"), root_1);
				// PLSQLCommons.g:93:18: ( id )?
				if ( stream_id.hasNext() ) {
					adaptor.addChild(root_1, stream_id.nextTree());
				}
				stream_id.reset();

				// PLSQLCommons.g:93:22: ( alias_quoted_string )?
				if ( stream_alias_quoted_string.hasNext() ) {
					adaptor.addChild(root_1, stream_alias_quoted_string.nextTree());
				}
				stream_alias_quoted_string.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "table_alias"


	public static class alias_quoted_string_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "alias_quoted_string"
	// PLSQLCommons.g:96:1: alias_quoted_string : quoted_string -> ID[$quoted_string.start] ;
	public final PLSQLParser_PLSQLCommons.alias_quoted_string_return alias_quoted_string() throws RecognitionException {
		PLSQLParser_PLSQLCommons.alias_quoted_string_return retval = new PLSQLParser_PLSQLCommons.alias_quoted_string_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope quoted_string11 =null;

		RewriteRuleSubtreeStream stream_quoted_string=new RewriteRuleSubtreeStream(adaptor,"rule quoted_string");

		try {
			// PLSQLCommons.g:97:5: ( quoted_string -> ID[$quoted_string.start] )
			// PLSQLCommons.g:97:10: quoted_string
			{
			pushFollow(FOLLOW_quoted_string_in_alias_quoted_string522);
			quoted_string11=quoted_string();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_quoted_string.add(quoted_string11.getTree());
			// AST REWRITE
			// elements: 
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 98:9: -> ID[$quoted_string.start]
			{
				adaptor.addChild(root_0, (Object)adaptor.create(ID, (quoted_string11!=null?(quoted_string11.start):null)));
			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "alias_quoted_string"


	public static class where_clause_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "where_clause"
	// PLSQLCommons.g:101:1: where_clause : where_key ^ ( current_of_clause | condition_wrapper ) ;
	public final PLSQLParser_PLSQLCommons.where_clause_return where_clause() throws RecognitionException {
		PLSQLParser_PLSQLCommons.where_clause_return retval = new PLSQLParser_PLSQLCommons.where_clause_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope where_key12 =null;
		ParserRuleReturnScope current_of_clause13 =null;
		ParserRuleReturnScope condition_wrapper14 =null;


		try {
			// PLSQLCommons.g:102:5: ( where_key ^ ( current_of_clause | condition_wrapper ) )
			// PLSQLCommons.g:102:10: where_key ^ ( current_of_clause | condition_wrapper )
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_where_key_in_where_clause555);
			where_key12=gPLSQLParser.where_key();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(where_key12.getTree(), root_0);
			// PLSQLCommons.g:102:21: ( current_of_clause | condition_wrapper )
			int alt7=2;
			int LA7_0 = input.LA(1);
			if ( (LA7_0==SQL92_RESERVED_CURRENT) ) {
				alt7=1;
			}
			else if ( (LA7_0==APPROXIMATE_NUM_LIT||LA7_0==BINDVAR||(LA7_0 >= CHAR_STRING && LA7_0 <= COLON)||LA7_0==DELIMITED_ID||LA7_0==EXACT_NUM_LIT||LA7_0==INTRODUCER||LA7_0==LEFT_PAREN||(LA7_0 >= MINUS_SIGN && LA7_0 <= NATIONAL_CHAR_STRING_LIT)||(LA7_0 >= PLSQL_NON_RESERVED_CAST && LA7_0 <= PLSQL_NON_RESERVED_CONNECT_BY_ROOT)||LA7_0==PLUS_SIGN||LA7_0==REGULAR_ID||LA7_0==SQL92_RESERVED_ALL||LA7_0==SQL92_RESERVED_ANY||LA7_0==SQL92_RESERVED_CASE||(LA7_0 >= SQL92_RESERVED_CURSOR && LA7_0 <= SQL92_RESERVED_DATE)||LA7_0==SQL92_RESERVED_DEFAULT||LA7_0==SQL92_RESERVED_DISTINCT||(LA7_0 >= SQL92_RESERVED_EXISTS && LA7_0 <= SQL92_RESERVED_FALSE)||(LA7_0 >= SQL92_RESERVED_NOT && LA7_0 <= SQL92_RESERVED_NULL)||LA7_0==SQL92_RESERVED_PRIOR||LA7_0==SQL92_RESERVED_TRUE||LA7_0==UNSIGNED_INTEGER) ) {
				alt7=2;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 7, 0, input);
				throw nvae;
			}

			switch (alt7) {
				case 1 :
					// PLSQLCommons.g:102:22: current_of_clause
					{
					pushFollow(FOLLOW_current_of_clause_in_where_clause559);
					current_of_clause13=current_of_clause();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, current_of_clause13.getTree());

					}
					break;
				case 2 :
					// PLSQLCommons.g:102:40: condition_wrapper
					{
					pushFollow(FOLLOW_condition_wrapper_in_where_clause561);
					condition_wrapper14=gPLSQLParser.condition_wrapper();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, condition_wrapper14.getTree());

					}
					break;

			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "where_clause"


	public static class current_of_clause_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "current_of_clause"
	// PLSQLCommons.g:105:1: current_of_clause : current_key ^ of_key ! cursor_name ;
	public final PLSQLParser_PLSQLCommons.current_of_clause_return current_of_clause() throws RecognitionException {
		PLSQLParser_PLSQLCommons.current_of_clause_return retval = new PLSQLParser_PLSQLCommons.current_of_clause_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope current_key15 =null;
		ParserRuleReturnScope of_key16 =null;
		ParserRuleReturnScope cursor_name17 =null;


		try {
			// PLSQLCommons.g:106:5: ( current_key ^ of_key ! cursor_name )
			// PLSQLCommons.g:106:10: current_key ^ of_key ! cursor_name
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_current_key_in_current_of_clause582);
			current_key15=gPLSQLParser.current_key();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(current_key15.getTree(), root_0);
			pushFollow(FOLLOW_of_key_in_current_of_clause585);
			of_key16=gPLSQLParser.of_key();
			state._fsp--;
			if (state.failed) return retval;
			pushFollow(FOLLOW_cursor_name_in_current_of_clause588);
			cursor_name17=cursor_name();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, cursor_name17.getTree());

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "current_of_clause"


	public static class into_clause_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "into_clause"
	// PLSQLCommons.g:109:1: into_clause : ( into_key ^ variable_name ( COMMA ! variable_name )* | bulk_key ^ collect_key ! into_key ! variable_name ( COMMA ! variable_name )* );
	public final PLSQLParser_PLSQLCommons.into_clause_return into_clause() throws RecognitionException {
		PLSQLParser_PLSQLCommons.into_clause_return retval = new PLSQLParser_PLSQLCommons.into_clause_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token COMMA20=null;
		Token COMMA26=null;
		ParserRuleReturnScope into_key18 =null;
		ParserRuleReturnScope variable_name19 =null;
		ParserRuleReturnScope variable_name21 =null;
		ParserRuleReturnScope bulk_key22 =null;
		ParserRuleReturnScope collect_key23 =null;
		ParserRuleReturnScope into_key24 =null;
		ParserRuleReturnScope variable_name25 =null;
		ParserRuleReturnScope variable_name27 =null;

		Object COMMA20_tree=null;
		Object COMMA26_tree=null;

		try {
			// PLSQLCommons.g:110:5: ( into_key ^ variable_name ( COMMA ! variable_name )* | bulk_key ^ collect_key ! into_key ! variable_name ( COMMA ! variable_name )* )
			int alt10=2;
			int LA10_0 = input.LA(1);
			if ( (LA10_0==SQL92_RESERVED_INTO) ) {
				alt10=1;
			}
			else if ( (LA10_0==REGULAR_ID) && ((input.LT(1).getText().equalsIgnoreCase("bulk")))) {
				alt10=2;
			}

			switch (alt10) {
				case 1 :
					// PLSQLCommons.g:110:10: into_key ^ variable_name ( COMMA ! variable_name )*
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_into_key_in_into_clause608);
					into_key18=gPLSQLParser.into_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(into_key18.getTree(), root_0);
					pushFollow(FOLLOW_variable_name_in_into_clause611);
					variable_name19=variable_name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, variable_name19.getTree());

					// PLSQLCommons.g:110:34: ( COMMA ! variable_name )*
					loop8:
					while (true) {
						int alt8=2;
						int LA8_0 = input.LA(1);
						if ( (LA8_0==COMMA) ) {
							alt8=1;
						}

						switch (alt8) {
						case 1 :
							// PLSQLCommons.g:110:35: COMMA ! variable_name
							{
							COMMA20=(Token)match(input,COMMA,FOLLOW_COMMA_in_into_clause614); if (state.failed) return retval;
							pushFollow(FOLLOW_variable_name_in_into_clause617);
							variable_name21=variable_name();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, variable_name21.getTree());

							}
							break;

						default :
							break loop8;
						}
					}

					}
					break;
				case 2 :
					// PLSQLCommons.g:111:10: bulk_key ^ collect_key ! into_key ! variable_name ( COMMA ! variable_name )*
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_bulk_key_in_into_clause631);
					bulk_key22=gPLSQLParser.bulk_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(bulk_key22.getTree(), root_0);
					pushFollow(FOLLOW_collect_key_in_into_clause634);
					collect_key23=gPLSQLParser.collect_key();
					state._fsp--;
					if (state.failed) return retval;
					pushFollow(FOLLOW_into_key_in_into_clause637);
					into_key24=gPLSQLParser.into_key();
					state._fsp--;
					if (state.failed) return retval;
					pushFollow(FOLLOW_variable_name_in_into_clause640);
					variable_name25=variable_name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, variable_name25.getTree());

					// PLSQLCommons.g:111:57: ( COMMA ! variable_name )*
					loop9:
					while (true) {
						int alt9=2;
						int LA9_0 = input.LA(1);
						if ( (LA9_0==COMMA) ) {
							alt9=1;
						}

						switch (alt9) {
						case 1 :
							// PLSQLCommons.g:111:58: COMMA ! variable_name
							{
							COMMA26=(Token)match(input,COMMA,FOLLOW_COMMA_in_into_clause643); if (state.failed) return retval;
							pushFollow(FOLLOW_variable_name_in_into_clause646);
							variable_name27=variable_name();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, variable_name27.getTree());

							}
							break;

						default :
							break loop9;
						}
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "into_clause"


	public static class xml_column_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "xml_column_name"
	// PLSQLCommons.g:118:1: xml_column_name : ( id -> ^( XML_COLUMN_NAME id ) | quoted_string -> ^( XML_COLUMN_NAME ID[$quoted_string.start] ) );
	public final PLSQLParser_PLSQLCommons.xml_column_name_return xml_column_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.xml_column_name_return retval = new PLSQLParser_PLSQLCommons.xml_column_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id28 =null;
		ParserRuleReturnScope quoted_string29 =null;

		RewriteRuleSubtreeStream stream_quoted_string=new RewriteRuleSubtreeStream(adaptor,"rule quoted_string");
		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:119:5: ( id -> ^( XML_COLUMN_NAME id ) | quoted_string -> ^( XML_COLUMN_NAME ID[$quoted_string.start] ) )
			int alt11=2;
			int LA11_0 = input.LA(1);
			if ( (LA11_0==DELIMITED_ID||LA11_0==INTRODUCER||LA11_0==REGULAR_ID) ) {
				alt11=1;
			}
			else if ( ((LA11_0 >= CHAR_STRING && LA11_0 <= CHAR_STRING_PERL)||LA11_0==NATIONAL_CHAR_STRING_LIT) ) {
				alt11=2;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 11, 0, input);
				throw nvae;
			}

			switch (alt11) {
				case 1 :
					// PLSQLCommons.g:119:10: id
					{
					pushFollow(FOLLOW_id_in_xml_column_name673);
					id28=id();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id.add(id28.getTree());
					// AST REWRITE
					// elements: id
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 119:13: -> ^( XML_COLUMN_NAME id )
					{
						// PLSQLCommons.g:119:16: ^( XML_COLUMN_NAME id )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(XML_COLUMN_NAME, "XML_COLUMN_NAME"), root_1);
						adaptor.addChild(root_1, stream_id.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// PLSQLCommons.g:120:10: quoted_string
					{
					pushFollow(FOLLOW_quoted_string_in_xml_column_name692);
					quoted_string29=quoted_string();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_quoted_string.add(quoted_string29.getTree());
					// AST REWRITE
					// elements: 
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 120:24: -> ^( XML_COLUMN_NAME ID[$quoted_string.start] )
					{
						// PLSQLCommons.g:120:27: ^( XML_COLUMN_NAME ID[$quoted_string.start] )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(XML_COLUMN_NAME, "XML_COLUMN_NAME"), root_1);
						adaptor.addChild(root_1, (Object)adaptor.create(ID, (quoted_string29!=null?(quoted_string29.start):null)));
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "xml_column_name"


	public static class cost_class_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "cost_class_name"
	// PLSQLCommons.g:123:1: cost_class_name : id -> ^( COST_CLASS_NAME id ) ;
	public final PLSQLParser_PLSQLCommons.cost_class_name_return cost_class_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.cost_class_name_return retval = new PLSQLParser_PLSQLCommons.cost_class_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id30 =null;

		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:124:5: ( id -> ^( COST_CLASS_NAME id ) )
			// PLSQLCommons.g:124:10: id
			{
			pushFollow(FOLLOW_id_in_cost_class_name721);
			id30=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id30.getTree());
			// AST REWRITE
			// elements: id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 125:9: -> ^( COST_CLASS_NAME id )
			{
				// PLSQLCommons.g:125:12: ^( COST_CLASS_NAME id )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COST_CLASS_NAME, "COST_CLASS_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "cost_class_name"


	public static class attribute_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "attribute_name"
	// PLSQLCommons.g:128:1: attribute_name : id -> ^( ATTRIBUTE_NAME id ) ;
	public final PLSQLParser_PLSQLCommons.attribute_name_return attribute_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.attribute_name_return retval = new PLSQLParser_PLSQLCommons.attribute_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id31 =null;

		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:129:5: ( id -> ^( ATTRIBUTE_NAME id ) )
			// PLSQLCommons.g:129:10: id
			{
			pushFollow(FOLLOW_id_in_attribute_name757);
			id31=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id31.getTree());
			// AST REWRITE
			// elements: id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 130:9: -> ^( ATTRIBUTE_NAME id )
			{
				// PLSQLCommons.g:130:12: ^( ATTRIBUTE_NAME id )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ATTRIBUTE_NAME, "ATTRIBUTE_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "attribute_name"


	public static class savepoint_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "savepoint_name"
	// PLSQLCommons.g:133:1: savepoint_name : id -> ^( SAVEPOINT_NAME id ) ;
	public final PLSQLParser_PLSQLCommons.savepoint_name_return savepoint_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.savepoint_name_return retval = new PLSQLParser_PLSQLCommons.savepoint_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id32 =null;

		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:134:5: ( id -> ^( SAVEPOINT_NAME id ) )
			// PLSQLCommons.g:134:10: id
			{
			pushFollow(FOLLOW_id_in_savepoint_name793);
			id32=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id32.getTree());
			// AST REWRITE
			// elements: id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 135:9: -> ^( SAVEPOINT_NAME id )
			{
				// PLSQLCommons.g:135:12: ^( SAVEPOINT_NAME id )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SAVEPOINT_NAME, "SAVEPOINT_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "savepoint_name"


	public static class rollback_segment_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "rollback_segment_name"
	// PLSQLCommons.g:138:1: rollback_segment_name : id -> ^( ROLLBACK_SEGMENT_NAME id ) ;
	public final PLSQLParser_PLSQLCommons.rollback_segment_name_return rollback_segment_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.rollback_segment_name_return retval = new PLSQLParser_PLSQLCommons.rollback_segment_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id33 =null;

		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:139:5: ( id -> ^( ROLLBACK_SEGMENT_NAME id ) )
			// PLSQLCommons.g:139:10: id
			{
			pushFollow(FOLLOW_id_in_rollback_segment_name829);
			id33=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id33.getTree());
			// AST REWRITE
			// elements: id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 140:9: -> ^( ROLLBACK_SEGMENT_NAME id )
			{
				// PLSQLCommons.g:140:12: ^( ROLLBACK_SEGMENT_NAME id )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ROLLBACK_SEGMENT_NAME, "ROLLBACK_SEGMENT_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "rollback_segment_name"


	public static class table_var_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "table_var_name"
	// PLSQLCommons.g:144:1: table_var_name : id -> ^( TABLE_VAR_NAME id ) ;
	public final PLSQLParser_PLSQLCommons.table_var_name_return table_var_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.table_var_name_return retval = new PLSQLParser_PLSQLCommons.table_var_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id34 =null;

		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:145:5: ( id -> ^( TABLE_VAR_NAME id ) )
			// PLSQLCommons.g:145:10: id
			{
			pushFollow(FOLLOW_id_in_table_var_name866);
			id34=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id34.getTree());
			// AST REWRITE
			// elements: id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 146:9: -> ^( TABLE_VAR_NAME id )
			{
				// PLSQLCommons.g:146:12: ^( TABLE_VAR_NAME id )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(TABLE_VAR_NAME, "TABLE_VAR_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "table_var_name"


	public static class schema_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "schema_name"
	// PLSQLCommons.g:149:1: schema_name : id -> ^( SCHEMA_NAME id ) ;
	public final PLSQLParser_PLSQLCommons.schema_name_return schema_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.schema_name_return retval = new PLSQLParser_PLSQLCommons.schema_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id35 =null;

		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:150:5: ( id -> ^( SCHEMA_NAME id ) )
			// PLSQLCommons.g:150:10: id
			{
			pushFollow(FOLLOW_id_in_schema_name902);
			id35=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id35.getTree());
			// AST REWRITE
			// elements: id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 151:9: -> ^( SCHEMA_NAME id )
			{
				// PLSQLCommons.g:151:12: ^( SCHEMA_NAME id )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SCHEMA_NAME, "SCHEMA_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "schema_name"


	public static class routine_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "routine_name"
	// PLSQLCommons.g:154:1: routine_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )* ( AT_SIGN link_name )? -> ^( ROUTINE_NAME id ( id_expression )* ( link_name )? ) ;
	public final PLSQLParser_PLSQLCommons.routine_name_return routine_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.routine_name_return retval = new PLSQLParser_PLSQLCommons.routine_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PERIOD37=null;
		Token AT_SIGN39=null;
		ParserRuleReturnScope id36 =null;
		ParserRuleReturnScope id_expression38 =null;
		ParserRuleReturnScope link_name40 =null;

		Object PERIOD37_tree=null;
		Object AT_SIGN39_tree=null;
		RewriteRuleTokenStream stream_AT_SIGN=new RewriteRuleTokenStream(adaptor,"token AT_SIGN");
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
		RewriteRuleSubtreeStream stream_link_name=new RewriteRuleSubtreeStream(adaptor,"rule link_name");

		try {
			// PLSQLCommons.g:155:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )* ( AT_SIGN link_name )? -> ^( ROUTINE_NAME id ( id_expression )* ( link_name )? ) )
			// PLSQLCommons.g:155:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )* ( AT_SIGN link_name )?
			{
			pushFollow(FOLLOW_id_in_routine_name938);
			id36=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id36.getTree());
			// PLSQLCommons.g:155:13: ( ( PERIOD id_expression )=> PERIOD id_expression )*
			loop12:
			while (true) {
				int alt12=2;
				int LA12_0 = input.LA(1);
				if ( (LA12_0==PERIOD) && (synpred2_PLSQLCommons())) {
					alt12=1;
				}

				switch (alt12) {
				case 1 :
					// PLSQLCommons.g:155:14: ( PERIOD id_expression )=> PERIOD id_expression
					{
					PERIOD37=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_routine_name948); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD37);

					pushFollow(FOLLOW_id_expression_in_routine_name950);
					id_expression38=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id_expression.add(id_expression38.getTree());
					}
					break;

				default :
					break loop12;
				}
			}

			// PLSQLCommons.g:155:62: ( AT_SIGN link_name )?
			int alt13=2;
			int LA13_0 = input.LA(1);
			if ( (LA13_0==AT_SIGN) ) {
				alt13=1;
			}
			switch (alt13) {
				case 1 :
					// PLSQLCommons.g:155:63: AT_SIGN link_name
					{
					AT_SIGN39=(Token)match(input,AT_SIGN,FOLLOW_AT_SIGN_in_routine_name955); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_AT_SIGN.add(AT_SIGN39);

					pushFollow(FOLLOW_link_name_in_routine_name957);
					link_name40=link_name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_link_name.add(link_name40.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: id_expression, id, link_name
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 156:9: -> ^( ROUTINE_NAME id ( id_expression )* ( link_name )? )
			{
				// PLSQLCommons.g:156:12: ^( ROUTINE_NAME id ( id_expression )* ( link_name )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ROUTINE_NAME, "ROUTINE_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				// PLSQLCommons.g:156:30: ( id_expression )*
				while ( stream_id_expression.hasNext() ) {
					adaptor.addChild(root_1, stream_id_expression.nextTree());
				}
				stream_id_expression.reset();

				// PLSQLCommons.g:156:45: ( link_name )?
				if ( stream_link_name.hasNext() ) {
					adaptor.addChild(root_1, stream_link_name.nextTree());
				}
				stream_link_name.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "routine_name"


	public static class package_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "package_name"
	// PLSQLCommons.g:159:1: package_name : id -> ^( PACKAGE_NAME id ) ;
	public final PLSQLParser_PLSQLCommons.package_name_return package_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.package_name_return retval = new PLSQLParser_PLSQLCommons.package_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id41 =null;

		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:160:5: ( id -> ^( PACKAGE_NAME id ) )
			// PLSQLCommons.g:160:10: id
			{
			pushFollow(FOLLOW_id_in_package_name1001);
			id41=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id41.getTree());
			// AST REWRITE
			// elements: id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 161:9: -> ^( PACKAGE_NAME id )
			{
				// PLSQLCommons.g:161:12: ^( PACKAGE_NAME id )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PACKAGE_NAME, "PACKAGE_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "package_name"


	public static class implementation_type_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "implementation_type_name"
	// PLSQLCommons.g:164:1: implementation_type_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( IMPLEMENTATION_TYPE_NAME id ( id_expression )? ) ;
	public final PLSQLParser_PLSQLCommons.implementation_type_name_return implementation_type_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.implementation_type_name_return retval = new PLSQLParser_PLSQLCommons.implementation_type_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PERIOD43=null;
		ParserRuleReturnScope id42 =null;
		ParserRuleReturnScope id_expression44 =null;

		Object PERIOD43_tree=null;
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:165:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( IMPLEMENTATION_TYPE_NAME id ( id_expression )? ) )
			// PLSQLCommons.g:165:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )?
			{
			pushFollow(FOLLOW_id_in_implementation_type_name1037);
			id42=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id42.getTree());
			// PLSQLCommons.g:165:13: ( ( PERIOD id_expression )=> PERIOD id_expression )?
			int alt14=2;
			int LA14_0 = input.LA(1);
			if ( (LA14_0==PERIOD) && (synpred3_PLSQLCommons())) {
				alt14=1;
			}
			switch (alt14) {
				case 1 :
					// PLSQLCommons.g:165:14: ( PERIOD id_expression )=> PERIOD id_expression
					{
					PERIOD43=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_implementation_type_name1047); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD43);

					pushFollow(FOLLOW_id_expression_in_implementation_type_name1049);
					id_expression44=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id_expression.add(id_expression44.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: id_expression, id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 166:9: -> ^( IMPLEMENTATION_TYPE_NAME id ( id_expression )? )
			{
				// PLSQLCommons.g:166:12: ^( IMPLEMENTATION_TYPE_NAME id ( id_expression )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(IMPLEMENTATION_TYPE_NAME, "IMPLEMENTATION_TYPE_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				// PLSQLCommons.g:166:42: ( id_expression )?
				if ( stream_id_expression.hasNext() ) {
					adaptor.addChild(root_1, stream_id_expression.nextTree());
				}
				stream_id_expression.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "implementation_type_name"


	public static class parameter_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "parameter_name"
	// PLSQLCommons.g:169:1: parameter_name : id -> ^( PARAMETER_NAME id ) ;
	public final PLSQLParser_PLSQLCommons.parameter_name_return parameter_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.parameter_name_return retval = new PLSQLParser_PLSQLCommons.parameter_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id45 =null;

		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:170:5: ( id -> ^( PARAMETER_NAME id ) )
			// PLSQLCommons.g:170:10: id
			{
			pushFollow(FOLLOW_id_in_parameter_name1090);
			id45=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id45.getTree());
			// AST REWRITE
			// elements: id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 171:9: -> ^( PARAMETER_NAME id )
			{
				// PLSQLCommons.g:171:12: ^( PARAMETER_NAME id )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PARAMETER_NAME, "PARAMETER_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "parameter_name"


	public static class reference_model_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "reference_model_name"
	// PLSQLCommons.g:174:1: reference_model_name : id -> ^( REFERENCE_MODEL_NAME id ) ;
	public final PLSQLParser_PLSQLCommons.reference_model_name_return reference_model_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.reference_model_name_return retval = new PLSQLParser_PLSQLCommons.reference_model_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id46 =null;

		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:175:5: ( id -> ^( REFERENCE_MODEL_NAME id ) )
			// PLSQLCommons.g:175:10: id
			{
			pushFollow(FOLLOW_id_in_reference_model_name1126);
			id46=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id46.getTree());
			// AST REWRITE
			// elements: id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 176:9: -> ^( REFERENCE_MODEL_NAME id )
			{
				// PLSQLCommons.g:176:12: ^( REFERENCE_MODEL_NAME id )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(REFERENCE_MODEL_NAME, "REFERENCE_MODEL_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "reference_model_name"


	public static class main_model_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "main_model_name"
	// PLSQLCommons.g:179:1: main_model_name : id -> ^( MAIN_MODEL_NAME id ) ;
	public final PLSQLParser_PLSQLCommons.main_model_name_return main_model_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.main_model_name_return retval = new PLSQLParser_PLSQLCommons.main_model_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id47 =null;

		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:180:5: ( id -> ^( MAIN_MODEL_NAME id ) )
			// PLSQLCommons.g:180:10: id
			{
			pushFollow(FOLLOW_id_in_main_model_name1162);
			id47=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id47.getTree());
			// AST REWRITE
			// elements: id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 181:9: -> ^( MAIN_MODEL_NAME id )
			{
				// PLSQLCommons.g:181:12: ^( MAIN_MODEL_NAME id )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(MAIN_MODEL_NAME, "MAIN_MODEL_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "main_model_name"


	public static class aggregate_function_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "aggregate_function_name"
	// PLSQLCommons.g:184:1: aggregate_function_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( ROUTINE_NAME id ( id_expression )* ) ;
	public final PLSQLParser_PLSQLCommons.aggregate_function_name_return aggregate_function_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.aggregate_function_name_return retval = new PLSQLParser_PLSQLCommons.aggregate_function_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PERIOD49=null;
		ParserRuleReturnScope id48 =null;
		ParserRuleReturnScope id_expression50 =null;

		Object PERIOD49_tree=null;
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:185:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( ROUTINE_NAME id ( id_expression )* ) )
			// PLSQLCommons.g:185:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )*
			{
			pushFollow(FOLLOW_id_in_aggregate_function_name1198);
			id48=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id48.getTree());
			// PLSQLCommons.g:185:13: ( ( PERIOD id_expression )=> PERIOD id_expression )*
			loop15:
			while (true) {
				int alt15=2;
				int LA15_0 = input.LA(1);
				if ( (LA15_0==PERIOD) && (synpred4_PLSQLCommons())) {
					alt15=1;
				}

				switch (alt15) {
				case 1 :
					// PLSQLCommons.g:185:14: ( PERIOD id_expression )=> PERIOD id_expression
					{
					PERIOD49=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_aggregate_function_name1208); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD49);

					pushFollow(FOLLOW_id_expression_in_aggregate_function_name1210);
					id_expression50=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id_expression.add(id_expression50.getTree());
					}
					break;

				default :
					break loop15;
				}
			}

			// AST REWRITE
			// elements: id_expression, id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 186:9: -> ^( ROUTINE_NAME id ( id_expression )* )
			{
				// PLSQLCommons.g:186:12: ^( ROUTINE_NAME id ( id_expression )* )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ROUTINE_NAME, "ROUTINE_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				// PLSQLCommons.g:186:30: ( id_expression )*
				while ( stream_id_expression.hasNext() ) {
					adaptor.addChild(root_1, stream_id_expression.nextTree());
				}
				stream_id_expression.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "aggregate_function_name"


	public static class query_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "query_name"
	// PLSQLCommons.g:189:1: query_name : id -> ^( QUERY_NAME id ) ;
	public final PLSQLParser_PLSQLCommons.query_name_return query_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.query_name_return retval = new PLSQLParser_PLSQLCommons.query_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id51 =null;

		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:190:5: ( id -> ^( QUERY_NAME id ) )
			// PLSQLCommons.g:190:10: id
			{
			pushFollow(FOLLOW_id_in_query_name1251);
			id51=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id51.getTree());
			// AST REWRITE
			// elements: id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 191:9: -> ^( QUERY_NAME id )
			{
				// PLSQLCommons.g:191:12: ^( QUERY_NAME id )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(QUERY_NAME, "QUERY_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "query_name"


	public static class constraint_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "constraint_name"
	// PLSQLCommons.g:194:1: constraint_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )* ( AT_SIGN link_name )? -> ^( CONSTRAINT_NAME id ( id_expression )* ( link_name )? ) ;
	public final PLSQLParser_PLSQLCommons.constraint_name_return constraint_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.constraint_name_return retval = new PLSQLParser_PLSQLCommons.constraint_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PERIOD53=null;
		Token AT_SIGN55=null;
		ParserRuleReturnScope id52 =null;
		ParserRuleReturnScope id_expression54 =null;
		ParserRuleReturnScope link_name56 =null;

		Object PERIOD53_tree=null;
		Object AT_SIGN55_tree=null;
		RewriteRuleTokenStream stream_AT_SIGN=new RewriteRuleTokenStream(adaptor,"token AT_SIGN");
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
		RewriteRuleSubtreeStream stream_link_name=new RewriteRuleSubtreeStream(adaptor,"rule link_name");

		try {
			// PLSQLCommons.g:195:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )* ( AT_SIGN link_name )? -> ^( CONSTRAINT_NAME id ( id_expression )* ( link_name )? ) )
			// PLSQLCommons.g:195:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )* ( AT_SIGN link_name )?
			{
			pushFollow(FOLLOW_id_in_constraint_name1287);
			id52=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id52.getTree());
			// PLSQLCommons.g:195:13: ( ( PERIOD id_expression )=> PERIOD id_expression )*
			loop16:
			while (true) {
				int alt16=2;
				int LA16_0 = input.LA(1);
				if ( (LA16_0==PERIOD) && (synpred5_PLSQLCommons())) {
					alt16=1;
				}

				switch (alt16) {
				case 1 :
					// PLSQLCommons.g:195:14: ( PERIOD id_expression )=> PERIOD id_expression
					{
					PERIOD53=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_constraint_name1297); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD53);

					pushFollow(FOLLOW_id_expression_in_constraint_name1299);
					id_expression54=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id_expression.add(id_expression54.getTree());
					}
					break;

				default :
					break loop16;
				}
			}

			// PLSQLCommons.g:195:62: ( AT_SIGN link_name )?
			int alt17=2;
			int LA17_0 = input.LA(1);
			if ( (LA17_0==AT_SIGN) ) {
				alt17=1;
			}
			switch (alt17) {
				case 1 :
					// PLSQLCommons.g:195:63: AT_SIGN link_name
					{
					AT_SIGN55=(Token)match(input,AT_SIGN,FOLLOW_AT_SIGN_in_constraint_name1304); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_AT_SIGN.add(AT_SIGN55);

					pushFollow(FOLLOW_link_name_in_constraint_name1306);
					link_name56=link_name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_link_name.add(link_name56.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: link_name, id, id_expression
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 196:9: -> ^( CONSTRAINT_NAME id ( id_expression )* ( link_name )? )
			{
				// PLSQLCommons.g:196:12: ^( CONSTRAINT_NAME id ( id_expression )* ( link_name )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CONSTRAINT_NAME, "CONSTRAINT_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				// PLSQLCommons.g:196:33: ( id_expression )*
				while ( stream_id_expression.hasNext() ) {
					adaptor.addChild(root_1, stream_id_expression.nextTree());
				}
				stream_id_expression.reset();

				// PLSQLCommons.g:196:48: ( link_name )?
				if ( stream_link_name.hasNext() ) {
					adaptor.addChild(root_1, stream_link_name.nextTree());
				}
				stream_link_name.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "constraint_name"


	public static class id_expression2_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "id_expression2"
	// PLSQLCommons.g:200:1: id_expression2 : ( id_expression | SQL92_RESERVED_EXISTS );
	public final PLSQLParser_PLSQLCommons.id_expression2_return id_expression2() throws RecognitionException {
		PLSQLParser_PLSQLCommons.id_expression2_return retval = new PLSQLParser_PLSQLCommons.id_expression2_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token SQL92_RESERVED_EXISTS58=null;
		ParserRuleReturnScope id_expression57 =null;

		Object SQL92_RESERVED_EXISTS58_tree=null;

		try {
			// PLSQLCommons.g:201:5: ( id_expression | SQL92_RESERVED_EXISTS )
			int alt18=2;
			int LA18_0 = input.LA(1);
			if ( (LA18_0==DELIMITED_ID||LA18_0==REGULAR_ID) ) {
				alt18=1;
			}
			else if ( (LA18_0==SQL92_RESERVED_EXISTS) ) {
				alt18=2;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 18, 0, input);
				throw nvae;
			}

			switch (alt18) {
				case 1 :
					// PLSQLCommons.g:201:8: id_expression
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_id_expression_in_id_expression21349);
					id_expression57=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, id_expression57.getTree());

					}
					break;
				case 2 :
					// PLSQLCommons.g:201:22: SQL92_RESERVED_EXISTS
					{
					root_0 = (Object)adaptor.nil();


					SQL92_RESERVED_EXISTS58=(Token)match(input,SQL92_RESERVED_EXISTS,FOLLOW_SQL92_RESERVED_EXISTS_in_id_expression21351); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					SQL92_RESERVED_EXISTS58_tree = (Object)adaptor.create(SQL92_RESERVED_EXISTS58);
					adaptor.addChild(root_0, SQL92_RESERVED_EXISTS58_tree);
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "id_expression2"


	public static class label_name2_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "label_name2"
	// PLSQLCommons.g:204:1: label_name2 : id_expression2 -> ^( LABEL_NAME id_expression2 ) ;
	public final PLSQLParser_PLSQLCommons.label_name2_return label_name2() throws RecognitionException {
		PLSQLParser_PLSQLCommons.label_name2_return retval = new PLSQLParser_PLSQLCommons.label_name2_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id_expression259 =null;

		RewriteRuleSubtreeStream stream_id_expression2=new RewriteRuleSubtreeStream(adaptor,"rule id_expression2");

		try {
			// PLSQLCommons.g:205:5: ( id_expression2 -> ^( LABEL_NAME id_expression2 ) )
			// PLSQLCommons.g:205:10: id_expression2
			{
			pushFollow(FOLLOW_id_expression2_in_label_name21371);
			id_expression259=id_expression2();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id_expression2.add(id_expression259.getTree());
			// AST REWRITE
			// elements: id_expression2
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 206:9: -> ^( LABEL_NAME id_expression2 )
			{
				// PLSQLCommons.g:206:12: ^( LABEL_NAME id_expression2 )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LABEL_NAME, "LABEL_NAME"), root_1);
				adaptor.addChild(root_1, stream_id_expression2.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "label_name2"


	public static class label_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "label_name"
	// PLSQLCommons.g:209:1: label_name : id_expression -> ^( LABEL_NAME id_expression ) ;
	public final PLSQLParser_PLSQLCommons.label_name_return label_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.label_name_return retval = new PLSQLParser_PLSQLCommons.label_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id_expression60 =null;

		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");

		try {
			// PLSQLCommons.g:210:5: ( id_expression -> ^( LABEL_NAME id_expression ) )
			// PLSQLCommons.g:210:10: id_expression
			{
			pushFollow(FOLLOW_id_expression_in_label_name1407);
			id_expression60=id_expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id_expression.add(id_expression60.getTree());
			// AST REWRITE
			// elements: id_expression
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 211:9: -> ^( LABEL_NAME id_expression )
			{
				// PLSQLCommons.g:211:12: ^( LABEL_NAME id_expression )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LABEL_NAME, "LABEL_NAME"), root_1);
				adaptor.addChild(root_1, stream_id_expression.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "label_name"


	public static class type_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "type_name"
	// PLSQLCommons.g:214:1: type_name : id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( TYPE_NAME ( id_expression )+ ) ;
	public final PLSQLParser_PLSQLCommons.type_name_return type_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.type_name_return retval = new PLSQLParser_PLSQLCommons.type_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PERIOD62=null;
		ParserRuleReturnScope id_expression61 =null;
		ParserRuleReturnScope id_expression63 =null;

		Object PERIOD62_tree=null;
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");

		try {
			// PLSQLCommons.g:215:5: ( id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( TYPE_NAME ( id_expression )+ ) )
			// PLSQLCommons.g:215:10: id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )*
			{
			pushFollow(FOLLOW_id_expression_in_type_name1443);
			id_expression61=id_expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id_expression.add(id_expression61.getTree());
			// PLSQLCommons.g:215:24: ( ( PERIOD id_expression )=> PERIOD id_expression )*
			loop19:
			while (true) {
				int alt19=2;
				int LA19_0 = input.LA(1);
				if ( (LA19_0==PERIOD) && (synpred6_PLSQLCommons())) {
					alt19=1;
				}

				switch (alt19) {
				case 1 :
					// PLSQLCommons.g:215:25: ( PERIOD id_expression )=> PERIOD id_expression
					{
					PERIOD62=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_type_name1453); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD62);

					pushFollow(FOLLOW_id_expression_in_type_name1455);
					id_expression63=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id_expression.add(id_expression63.getTree());
					}
					break;

				default :
					break loop19;
				}
			}

			// AST REWRITE
			// elements: id_expression
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 216:9: -> ^( TYPE_NAME ( id_expression )+ )
			{
				// PLSQLCommons.g:216:12: ^( TYPE_NAME ( id_expression )+ )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(TYPE_NAME, "TYPE_NAME"), root_1);
				if ( !(stream_id_expression.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_id_expression.hasNext() ) {
					adaptor.addChild(root_1, stream_id_expression.nextTree());
				}
				stream_id_expression.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "type_name"


	public static class sequence_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "sequence_name"
	// PLSQLCommons.g:219:1: sequence_name : id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( SEQUENCE_NAME ( id_expression )+ ) ;
	public final PLSQLParser_PLSQLCommons.sequence_name_return sequence_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.sequence_name_return retval = new PLSQLParser_PLSQLCommons.sequence_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PERIOD65=null;
		ParserRuleReturnScope id_expression64 =null;
		ParserRuleReturnScope id_expression66 =null;

		Object PERIOD65_tree=null;
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");

		try {
			// PLSQLCommons.g:220:5: ( id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( SEQUENCE_NAME ( id_expression )+ ) )
			// PLSQLCommons.g:220:10: id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )*
			{
			pushFollow(FOLLOW_id_expression_in_sequence_name1494);
			id_expression64=id_expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id_expression.add(id_expression64.getTree());
			// PLSQLCommons.g:220:24: ( ( PERIOD id_expression )=> PERIOD id_expression )*
			loop20:
			while (true) {
				int alt20=2;
				int LA20_0 = input.LA(1);
				if ( (LA20_0==PERIOD) && (synpred7_PLSQLCommons())) {
					alt20=1;
				}

				switch (alt20) {
				case 1 :
					// PLSQLCommons.g:220:25: ( PERIOD id_expression )=> PERIOD id_expression
					{
					PERIOD65=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_sequence_name1504); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD65);

					pushFollow(FOLLOW_id_expression_in_sequence_name1506);
					id_expression66=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id_expression.add(id_expression66.getTree());
					}
					break;

				default :
					break loop20;
				}
			}

			// AST REWRITE
			// elements: id_expression
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 221:9: -> ^( SEQUENCE_NAME ( id_expression )+ )
			{
				// PLSQLCommons.g:221:12: ^( SEQUENCE_NAME ( id_expression )+ )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SEQUENCE_NAME, "SEQUENCE_NAME"), root_1);
				if ( !(stream_id_expression.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_id_expression.hasNext() ) {
					adaptor.addChild(root_1, stream_id_expression.nextTree());
				}
				stream_id_expression.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "sequence_name"


	public static class exception_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "exception_name"
	// PLSQLCommons.g:224:1: exception_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( EXCEPTION_NAME id ( id_expression )* ) ;
	public final PLSQLParser_PLSQLCommons.exception_name_return exception_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.exception_name_return retval = new PLSQLParser_PLSQLCommons.exception_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PERIOD68=null;
		ParserRuleReturnScope id67 =null;
		ParserRuleReturnScope id_expression69 =null;

		Object PERIOD68_tree=null;
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:225:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( EXCEPTION_NAME id ( id_expression )* ) )
			// PLSQLCommons.g:225:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )*
			{
			pushFollow(FOLLOW_id_in_exception_name1545);
			id67=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id67.getTree());
			// PLSQLCommons.g:225:13: ( ( PERIOD id_expression )=> PERIOD id_expression )*
			loop21:
			while (true) {
				int alt21=2;
				int LA21_0 = input.LA(1);
				if ( (LA21_0==PERIOD) && (synpred8_PLSQLCommons())) {
					alt21=1;
				}

				switch (alt21) {
				case 1 :
					// PLSQLCommons.g:225:14: ( PERIOD id_expression )=> PERIOD id_expression
					{
					PERIOD68=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_exception_name1555); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD68);

					pushFollow(FOLLOW_id_expression_in_exception_name1557);
					id_expression69=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id_expression.add(id_expression69.getTree());
					}
					break;

				default :
					break loop21;
				}
			}

			// AST REWRITE
			// elements: id, id_expression
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 226:9: -> ^( EXCEPTION_NAME id ( id_expression )* )
			{
				// PLSQLCommons.g:226:11: ^( EXCEPTION_NAME id ( id_expression )* )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXCEPTION_NAME, "EXCEPTION_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				// PLSQLCommons.g:226:31: ( id_expression )*
				while ( stream_id_expression.hasNext() ) {
					adaptor.addChild(root_1, stream_id_expression.nextTree());
				}
				stream_id_expression.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "exception_name"


	public static class id2_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "id2"
	// PLSQLCommons.g:230:1: id2 : ( id | SQL92_RESERVED_EXISTS );
	public final PLSQLParser_PLSQLCommons.id2_return id2() throws RecognitionException {
		PLSQLParser_PLSQLCommons.id2_return retval = new PLSQLParser_PLSQLCommons.id2_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token SQL92_RESERVED_EXISTS71=null;
		ParserRuleReturnScope id70 =null;

		Object SQL92_RESERVED_EXISTS71_tree=null;

		try {
			// PLSQLCommons.g:231:2: ( id | SQL92_RESERVED_EXISTS )
			int alt22=2;
			int LA22_0 = input.LA(1);
			if ( (LA22_0==DELIMITED_ID||LA22_0==INTRODUCER||LA22_0==REGULAR_ID) ) {
				alt22=1;
			}
			else if ( (LA22_0==SQL92_RESERVED_EXISTS) ) {
				alt22=2;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 22, 0, input);
				throw nvae;
			}

			switch (alt22) {
				case 1 :
					// PLSQLCommons.g:231:6: id
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_id_in_id21595);
					id70=id();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, id70.getTree());

					}
					break;
				case 2 :
					// PLSQLCommons.g:231:11: SQL92_RESERVED_EXISTS
					{
					root_0 = (Object)adaptor.nil();


					SQL92_RESERVED_EXISTS71=(Token)match(input,SQL92_RESERVED_EXISTS,FOLLOW_SQL92_RESERVED_EXISTS_in_id21599); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					SQL92_RESERVED_EXISTS71_tree = (Object)adaptor.create(SQL92_RESERVED_EXISTS71);
					adaptor.addChild(root_0, SQL92_RESERVED_EXISTS71_tree);
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "id2"


	public static class function_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "function_name"
	// PLSQLCommons.g:234:1: function_name : id2 ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( FUNCTION_NAME id2 ( id_expression )* ) ;
	public final PLSQLParser_PLSQLCommons.function_name_return function_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.function_name_return retval = new PLSQLParser_PLSQLCommons.function_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PERIOD73=null;
		ParserRuleReturnScope id272 =null;
		ParserRuleReturnScope id_expression74 =null;

		Object PERIOD73_tree=null;
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
		RewriteRuleSubtreeStream stream_id2=new RewriteRuleSubtreeStream(adaptor,"rule id2");

		try {
			// PLSQLCommons.g:235:5: ( id2 ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( FUNCTION_NAME id2 ( id_expression )* ) )
			// PLSQLCommons.g:235:10: id2 ( ( PERIOD id_expression )=> PERIOD id_expression )?
			{
			pushFollow(FOLLOW_id2_in_function_name1617);
			id272=id2();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id2.add(id272.getTree());
			// PLSQLCommons.g:235:14: ( ( PERIOD id_expression )=> PERIOD id_expression )?
			int alt23=2;
			int LA23_0 = input.LA(1);
			if ( (LA23_0==PERIOD) && (synpred9_PLSQLCommons())) {
				alt23=1;
			}
			switch (alt23) {
				case 1 :
					// PLSQLCommons.g:235:15: ( PERIOD id_expression )=> PERIOD id_expression
					{
					PERIOD73=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_function_name1627); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD73);

					pushFollow(FOLLOW_id_expression_in_function_name1629);
					id_expression74=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id_expression.add(id_expression74.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: id2, id_expression
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 236:9: -> ^( FUNCTION_NAME id2 ( id_expression )* )
			{
				// PLSQLCommons.g:236:12: ^( FUNCTION_NAME id2 ( id_expression )* )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNCTION_NAME, "FUNCTION_NAME"), root_1);
				adaptor.addChild(root_1, stream_id2.nextTree());
				// PLSQLCommons.g:236:32: ( id_expression )*
				while ( stream_id_expression.hasNext() ) {
					adaptor.addChild(root_1, stream_id_expression.nextTree());
				}
				stream_id_expression.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "function_name"


	public static class procedure_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "procedure_name"
	// PLSQLCommons.g:239:1: procedure_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( PROCEDURE_NAME id ( id_expression )* ) ;
	public final PLSQLParser_PLSQLCommons.procedure_name_return procedure_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.procedure_name_return retval = new PLSQLParser_PLSQLCommons.procedure_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PERIOD76=null;
		ParserRuleReturnScope id75 =null;
		ParserRuleReturnScope id_expression77 =null;

		Object PERIOD76_tree=null;
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:240:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( PROCEDURE_NAME id ( id_expression )* ) )
			// PLSQLCommons.g:240:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )?
			{
			pushFollow(FOLLOW_id_in_procedure_name1670);
			id75=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id75.getTree());
			// PLSQLCommons.g:240:13: ( ( PERIOD id_expression )=> PERIOD id_expression )?
			int alt24=2;
			int LA24_0 = input.LA(1);
			if ( (LA24_0==PERIOD) && (synpred10_PLSQLCommons())) {
				alt24=1;
			}
			switch (alt24) {
				case 1 :
					// PLSQLCommons.g:240:14: ( PERIOD id_expression )=> PERIOD id_expression
					{
					PERIOD76=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_procedure_name1680); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD76);

					pushFollow(FOLLOW_id_expression_in_procedure_name1682);
					id_expression77=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id_expression.add(id_expression77.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: id, id_expression
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 241:9: -> ^( PROCEDURE_NAME id ( id_expression )* )
			{
				// PLSQLCommons.g:241:12: ^( PROCEDURE_NAME id ( id_expression )* )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PROCEDURE_NAME, "PROCEDURE_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				// PLSQLCommons.g:241:32: ( id_expression )*
				while ( stream_id_expression.hasNext() ) {
					adaptor.addChild(root_1, stream_id_expression.nextTree());
				}
				stream_id_expression.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "procedure_name"


	public static class trigger_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "trigger_name"
	// PLSQLCommons.g:244:1: trigger_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( TRIGGER_NAME id ( id_expression )* ) ;
	public final PLSQLParser_PLSQLCommons.trigger_name_return trigger_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.trigger_name_return retval = new PLSQLParser_PLSQLCommons.trigger_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PERIOD79=null;
		ParserRuleReturnScope id78 =null;
		ParserRuleReturnScope id_expression80 =null;

		Object PERIOD79_tree=null;
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:245:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( TRIGGER_NAME id ( id_expression )* ) )
			// PLSQLCommons.g:245:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )?
			{
			pushFollow(FOLLOW_id_in_trigger_name1723);
			id78=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id78.getTree());
			// PLSQLCommons.g:245:13: ( ( PERIOD id_expression )=> PERIOD id_expression )?
			int alt25=2;
			int LA25_0 = input.LA(1);
			if ( (LA25_0==PERIOD) && (synpred11_PLSQLCommons())) {
				alt25=1;
			}
			switch (alt25) {
				case 1 :
					// PLSQLCommons.g:245:14: ( PERIOD id_expression )=> PERIOD id_expression
					{
					PERIOD79=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_trigger_name1733); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD79);

					pushFollow(FOLLOW_id_expression_in_trigger_name1735);
					id_expression80=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id_expression.add(id_expression80.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: id, id_expression
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 246:9: -> ^( TRIGGER_NAME id ( id_expression )* )
			{
				// PLSQLCommons.g:246:11: ^( TRIGGER_NAME id ( id_expression )* )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(TRIGGER_NAME, "TRIGGER_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				// PLSQLCommons.g:246:29: ( id_expression )*
				while ( stream_id_expression.hasNext() ) {
					adaptor.addChild(root_1, stream_id_expression.nextTree());
				}
				stream_id_expression.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "trigger_name"


	public static class variable_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "variable_name"
	// PLSQLCommons.g:249:1: variable_name : ( ( INTRODUCER char_set_name )? id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( VARIABLE_NAME ( char_set_name )? ( id_expression )* ) | bind_variable -> ^( HOSTED_VARIABLE_NAME bind_variable ) );
	public final PLSQLParser_PLSQLCommons.variable_name_return variable_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.variable_name_return retval = new PLSQLParser_PLSQLCommons.variable_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token INTRODUCER81=null;
		Token PERIOD84=null;
		ParserRuleReturnScope char_set_name82 =null;
		ParserRuleReturnScope id_expression83 =null;
		ParserRuleReturnScope id_expression85 =null;
		ParserRuleReturnScope bind_variable86 =null;

		Object INTRODUCER81_tree=null;
		Object PERIOD84_tree=null;
		RewriteRuleTokenStream stream_INTRODUCER=new RewriteRuleTokenStream(adaptor,"token INTRODUCER");
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
		RewriteRuleSubtreeStream stream_char_set_name=new RewriteRuleSubtreeStream(adaptor,"rule char_set_name");
		RewriteRuleSubtreeStream stream_bind_variable=new RewriteRuleSubtreeStream(adaptor,"rule bind_variable");

		try {
			// PLSQLCommons.g:250:5: ( ( INTRODUCER char_set_name )? id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( VARIABLE_NAME ( char_set_name )? ( id_expression )* ) | bind_variable -> ^( HOSTED_VARIABLE_NAME bind_variable ) )
			int alt28=2;
			int LA28_0 = input.LA(1);
			if ( (LA28_0==DELIMITED_ID||LA28_0==INTRODUCER||LA28_0==REGULAR_ID) ) {
				alt28=1;
			}
			else if ( (LA28_0==BINDVAR||LA28_0==COLON) ) {
				alt28=2;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 28, 0, input);
				throw nvae;
			}

			switch (alt28) {
				case 1 :
					// PLSQLCommons.g:250:10: ( INTRODUCER char_set_name )? id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )?
					{
					// PLSQLCommons.g:250:10: ( INTRODUCER char_set_name )?
					int alt26=2;
					int LA26_0 = input.LA(1);
					if ( (LA26_0==INTRODUCER) ) {
						alt26=1;
					}
					switch (alt26) {
						case 1 :
							// PLSQLCommons.g:250:11: INTRODUCER char_set_name
							{
							INTRODUCER81=(Token)match(input,INTRODUCER,FOLLOW_INTRODUCER_in_variable_name1776); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_INTRODUCER.add(INTRODUCER81);

							pushFollow(FOLLOW_char_set_name_in_variable_name1778);
							char_set_name82=char_set_name();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_char_set_name.add(char_set_name82.getTree());
							}
							break;

					}

					pushFollow(FOLLOW_id_expression_in_variable_name1794);
					id_expression83=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id_expression.add(id_expression83.getTree());
					// PLSQLCommons.g:251:27: ( ( PERIOD id_expression )=> PERIOD id_expression )?
					int alt27=2;
					int LA27_0 = input.LA(1);
					if ( (LA27_0==PERIOD) && (synpred12_PLSQLCommons())) {
						alt27=1;
					}
					switch (alt27) {
						case 1 :
							// PLSQLCommons.g:251:28: ( PERIOD id_expression )=> PERIOD id_expression
							{
							PERIOD84=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_variable_name1804); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD84);

							pushFollow(FOLLOW_id_expression_in_variable_name1806);
							id_expression85=id_expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_id_expression.add(id_expression85.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: char_set_name, id_expression
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 252:9: -> ^( VARIABLE_NAME ( char_set_name )? ( id_expression )* )
					{
						// PLSQLCommons.g:252:12: ^( VARIABLE_NAME ( char_set_name )? ( id_expression )* )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VARIABLE_NAME, "VARIABLE_NAME"), root_1);
						// PLSQLCommons.g:252:28: ( char_set_name )?
						if ( stream_char_set_name.hasNext() ) {
							adaptor.addChild(root_1, stream_char_set_name.nextTree());
						}
						stream_char_set_name.reset();

						// PLSQLCommons.g:252:43: ( id_expression )*
						while ( stream_id_expression.hasNext() ) {
							adaptor.addChild(root_1, stream_id_expression.nextTree());
						}
						stream_id_expression.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// PLSQLCommons.g:253:10: bind_variable
					{
					pushFollow(FOLLOW_bind_variable_in_variable_name1839);
					bind_variable86=bind_variable();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_bind_variable.add(bind_variable86.getTree());
					// AST REWRITE
					// elements: bind_variable
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 254:9: -> ^( HOSTED_VARIABLE_NAME bind_variable )
					{
						// PLSQLCommons.g:254:12: ^( HOSTED_VARIABLE_NAME bind_variable )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(HOSTED_VARIABLE_NAME, "HOSTED_VARIABLE_NAME"), root_1);
						adaptor.addChild(root_1, stream_bind_variable.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "variable_name"


	public static class index_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "index_name"
	// PLSQLCommons.g:257:1: index_name : id -> ^( INDEX_NAME id ) ;
	public final PLSQLParser_PLSQLCommons.index_name_return index_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.index_name_return retval = new PLSQLParser_PLSQLCommons.index_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id87 =null;

		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:258:5: ( id -> ^( INDEX_NAME id ) )
			// PLSQLCommons.g:258:10: id
			{
			pushFollow(FOLLOW_id_in_index_name1875);
			id87=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id87.getTree());
			// AST REWRITE
			// elements: id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 259:9: -> ^( INDEX_NAME id )
			{
				// PLSQLCommons.g:259:12: ^( INDEX_NAME id )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(INDEX_NAME, "INDEX_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "index_name"


	public static class cursor_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "cursor_name"
	// PLSQLCommons.g:262:1: cursor_name : ( id | bind_variable ) -> ^( CURSOR_NAME ( id )? ( bind_variable )? ) ;
	public final PLSQLParser_PLSQLCommons.cursor_name_return cursor_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.cursor_name_return retval = new PLSQLParser_PLSQLCommons.cursor_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id88 =null;
		ParserRuleReturnScope bind_variable89 =null;

		RewriteRuleSubtreeStream stream_bind_variable=new RewriteRuleSubtreeStream(adaptor,"rule bind_variable");
		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:263:5: ( ( id | bind_variable ) -> ^( CURSOR_NAME ( id )? ( bind_variable )? ) )
			// PLSQLCommons.g:263:10: ( id | bind_variable )
			{
			// PLSQLCommons.g:263:10: ( id | bind_variable )
			int alt29=2;
			int LA29_0 = input.LA(1);
			if ( (LA29_0==DELIMITED_ID||LA29_0==INTRODUCER||LA29_0==REGULAR_ID) ) {
				alt29=1;
			}
			else if ( (LA29_0==BINDVAR||LA29_0==COLON) ) {
				alt29=2;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 29, 0, input);
				throw nvae;
			}

			switch (alt29) {
				case 1 :
					// PLSQLCommons.g:263:11: id
					{
					pushFollow(FOLLOW_id_in_cursor_name1912);
					id88=id();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id.add(id88.getTree());
					}
					break;
				case 2 :
					// PLSQLCommons.g:263:16: bind_variable
					{
					pushFollow(FOLLOW_bind_variable_in_cursor_name1916);
					bind_variable89=bind_variable();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_bind_variable.add(bind_variable89.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: bind_variable, id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 264:9: -> ^( CURSOR_NAME ( id )? ( bind_variable )? )
			{
				// PLSQLCommons.g:264:12: ^( CURSOR_NAME ( id )? ( bind_variable )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CURSOR_NAME, "CURSOR_NAME"), root_1);
				// PLSQLCommons.g:264:26: ( id )?
				if ( stream_id.hasNext() ) {
					adaptor.addChild(root_1, stream_id.nextTree());
				}
				stream_id.reset();

				// PLSQLCommons.g:264:30: ( bind_variable )?
				if ( stream_bind_variable.hasNext() ) {
					adaptor.addChild(root_1, stream_bind_variable.nextTree());
				}
				stream_bind_variable.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "cursor_name"


	public static class record_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "record_name"
	// PLSQLCommons.g:267:1: record_name : ( id | bind_variable ) -> ^( RECORD_NAME id ) ;
	public final PLSQLParser_PLSQLCommons.record_name_return record_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.record_name_return retval = new PLSQLParser_PLSQLCommons.record_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id90 =null;
		ParserRuleReturnScope bind_variable91 =null;

		RewriteRuleSubtreeStream stream_bind_variable=new RewriteRuleSubtreeStream(adaptor,"rule bind_variable");
		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:268:5: ( ( id | bind_variable ) -> ^( RECORD_NAME id ) )
			// PLSQLCommons.g:268:10: ( id | bind_variable )
			{
			// PLSQLCommons.g:268:10: ( id | bind_variable )
			int alt30=2;
			int LA30_0 = input.LA(1);
			if ( (LA30_0==DELIMITED_ID||LA30_0==INTRODUCER||LA30_0==REGULAR_ID) ) {
				alt30=1;
			}
			else if ( (LA30_0==BINDVAR||LA30_0==COLON) ) {
				alt30=2;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 30, 0, input);
				throw nvae;
			}

			switch (alt30) {
				case 1 :
					// PLSQLCommons.g:268:11: id
					{
					pushFollow(FOLLOW_id_in_record_name1958);
					id90=id();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id.add(id90.getTree());
					}
					break;
				case 2 :
					// PLSQLCommons.g:268:16: bind_variable
					{
					pushFollow(FOLLOW_bind_variable_in_record_name1962);
					bind_variable91=bind_variable();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_bind_variable.add(bind_variable91.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 269:9: -> ^( RECORD_NAME id )
			{
				// PLSQLCommons.g:269:11: ^( RECORD_NAME id )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(RECORD_NAME, "RECORD_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "record_name"


	public static class collection_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "collection_name"
	// PLSQLCommons.g:272:1: collection_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( COLLECTION_NAME id ( id_expression )? ) ;
	public final PLSQLParser_PLSQLCommons.collection_name_return collection_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.collection_name_return retval = new PLSQLParser_PLSQLCommons.collection_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PERIOD93=null;
		ParserRuleReturnScope id92 =null;
		ParserRuleReturnScope id_expression94 =null;

		Object PERIOD93_tree=null;
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:273:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( COLLECTION_NAME id ( id_expression )? ) )
			// PLSQLCommons.g:273:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )?
			{
			pushFollow(FOLLOW_id_in_collection_name1998);
			id92=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id92.getTree());
			// PLSQLCommons.g:273:13: ( ( PERIOD id_expression )=> PERIOD id_expression )?
			int alt31=2;
			int LA31_0 = input.LA(1);
			if ( (LA31_0==PERIOD) && (synpred13_PLSQLCommons())) {
				alt31=1;
			}
			switch (alt31) {
				case 1 :
					// PLSQLCommons.g:273:14: ( PERIOD id_expression )=> PERIOD id_expression
					{
					PERIOD93=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_collection_name2008); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD93);

					pushFollow(FOLLOW_id_expression_in_collection_name2010);
					id_expression94=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id_expression.add(id_expression94.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: id_expression, id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 274:9: -> ^( COLLECTION_NAME id ( id_expression )? )
			{
				// PLSQLCommons.g:274:11: ^( COLLECTION_NAME id ( id_expression )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COLLECTION_NAME, "COLLECTION_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				// PLSQLCommons.g:274:32: ( id_expression )?
				if ( stream_id_expression.hasNext() ) {
					adaptor.addChild(root_1, stream_id_expression.nextTree());
				}
				stream_id_expression.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "collection_name"


	public static class link_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "link_name"
	// PLSQLCommons.g:277:1: link_name : id -> ^( LINK_NAME id ) ;
	public final PLSQLParser_PLSQLCommons.link_name_return link_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.link_name_return retval = new PLSQLParser_PLSQLCommons.link_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope id95 =null;

		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:278:5: ( id -> ^( LINK_NAME id ) )
			// PLSQLCommons.g:278:10: id
			{
			pushFollow(FOLLOW_id_in_link_name2050);
			id95=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id95.getTree());
			// AST REWRITE
			// elements: id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 279:9: -> ^( LINK_NAME id )
			{
				// PLSQLCommons.g:279:12: ^( LINK_NAME id )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LINK_NAME, "LINK_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "link_name"


	public static class column_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "column_name"
	// PLSQLCommons.g:282:1: column_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( COLUMN_NAME id ( id_expression )* ) ;
	public final PLSQLParser_PLSQLCommons.column_name_return column_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.column_name_return retval = new PLSQLParser_PLSQLCommons.column_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PERIOD97=null;
		ParserRuleReturnScope id96 =null;
		ParserRuleReturnScope id_expression98 =null;

		Object PERIOD97_tree=null;
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		try {
			// PLSQLCommons.g:283:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( COLUMN_NAME id ( id_expression )* ) )
			// PLSQLCommons.g:283:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )*
			{
			pushFollow(FOLLOW_id_in_column_name2086);
			id96=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id96.getTree());
			// PLSQLCommons.g:283:13: ( ( PERIOD id_expression )=> PERIOD id_expression )*
			loop32:
			while (true) {
				int alt32=2;
				int LA32_0 = input.LA(1);
				if ( (LA32_0==PERIOD) && (synpred14_PLSQLCommons())) {
					alt32=1;
				}

				switch (alt32) {
				case 1 :
					// PLSQLCommons.g:283:14: ( PERIOD id_expression )=> PERIOD id_expression
					{
					PERIOD97=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_column_name2096); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD97);

					pushFollow(FOLLOW_id_expression_in_column_name2098);
					id_expression98=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id_expression.add(id_expression98.getTree());
					}
					break;

				default :
					break loop32;
				}
			}

			// AST REWRITE
			// elements: id_expression, id
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 284:9: -> ^( COLUMN_NAME id ( id_expression )* )
			{
				// PLSQLCommons.g:284:12: ^( COLUMN_NAME id ( id_expression )* )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COLUMN_NAME, "COLUMN_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				// PLSQLCommons.g:284:29: ( id_expression )*
				while ( stream_id_expression.hasNext() ) {
					adaptor.addChild(root_1, stream_id_expression.nextTree());
				}
				stream_id_expression.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "column_name"


	public static class tableview_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "tableview_name"
	// PLSQLCommons.g:287:1: tableview_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )? ( AT_SIGN link_name |{...}? => partition_extension_clause )? -> ^( TABLEVIEW_NAME id ( id_expression )? ( link_name )? ( partition_extension_clause )? ) ;
	public final PLSQLParser_PLSQLCommons.tableview_name_return tableview_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.tableview_name_return retval = new PLSQLParser_PLSQLCommons.tableview_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PERIOD100=null;
		Token AT_SIGN102=null;
		ParserRuleReturnScope id99 =null;
		ParserRuleReturnScope id_expression101 =null;
		ParserRuleReturnScope link_name103 =null;
		ParserRuleReturnScope partition_extension_clause104 =null;

		Object PERIOD100_tree=null;
		Object AT_SIGN102_tree=null;
		RewriteRuleTokenStream stream_AT_SIGN=new RewriteRuleTokenStream(adaptor,"token AT_SIGN");
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
		RewriteRuleSubtreeStream stream_partition_extension_clause=new RewriteRuleSubtreeStream(adaptor,"rule partition_extension_clause");
		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
		RewriteRuleSubtreeStream stream_link_name=new RewriteRuleSubtreeStream(adaptor,"rule link_name");

		try {
			// PLSQLCommons.g:288:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )? ( AT_SIGN link_name |{...}? => partition_extension_clause )? -> ^( TABLEVIEW_NAME id ( id_expression )? ( link_name )? ( partition_extension_clause )? ) )
			// PLSQLCommons.g:288:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )? ( AT_SIGN link_name |{...}? => partition_extension_clause )?
			{
			pushFollow(FOLLOW_id_in_tableview_name2139);
			id99=id();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id.add(id99.getTree());
			// PLSQLCommons.g:288:13: ( ( PERIOD id_expression )=> PERIOD id_expression )?
			int alt33=2;
			int LA33_0 = input.LA(1);
			if ( (LA33_0==PERIOD) ) {
				int LA33_1 = input.LA(2);
				if ( (LA33_1==REGULAR_ID) && (synpred15_PLSQLCommons())) {
					alt33=1;
				}
				else if ( (LA33_1==DELIMITED_ID) && (synpred15_PLSQLCommons())) {
					alt33=1;
				}
			}
			switch (alt33) {
				case 1 :
					// PLSQLCommons.g:288:14: ( PERIOD id_expression )=> PERIOD id_expression
					{
					PERIOD100=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_tableview_name2149); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD100);

					pushFollow(FOLLOW_id_expression_in_tableview_name2151);
					id_expression101=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id_expression.add(id_expression101.getTree());
					}
					break;

			}

			// PLSQLCommons.g:289:5: ( AT_SIGN link_name |{...}? => partition_extension_clause )?
			int alt34=3;
			alt34 = dfa34.predict(input);
			switch (alt34) {
				case 1 :
					// PLSQLCommons.g:289:10: AT_SIGN link_name
					{
					AT_SIGN102=(Token)match(input,AT_SIGN,FOLLOW_AT_SIGN_in_tableview_name2165); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_AT_SIGN.add(AT_SIGN102);

					pushFollow(FOLLOW_link_name_in_tableview_name2167);
					link_name103=link_name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_link_name.add(link_name103.getTree());
					}
					break;
				case 2 :
					// PLSQLCommons.g:290:10: {...}? => partition_extension_clause
					{
					if ( !((!(input.LA(2) == SQL92_RESERVED_BY))) ) {
						if (state.backtracking>0) {state.failed=true; return retval;}
						throw new FailedPredicateException(input, "tableview_name", "!(input.LA(2) == SQL92_RESERVED_BY)");
					}
					pushFollow(FOLLOW_partition_extension_clause_in_tableview_name2181);
					partition_extension_clause104=partition_extension_clause();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_partition_extension_clause.add(partition_extension_clause104.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: link_name, partition_extension_clause, id, id_expression
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 292:9: -> ^( TABLEVIEW_NAME id ( id_expression )? ( link_name )? ( partition_extension_clause )? )
			{
				// PLSQLCommons.g:292:12: ^( TABLEVIEW_NAME id ( id_expression )? ( link_name )? ( partition_extension_clause )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(TABLEVIEW_NAME, "TABLEVIEW_NAME"), root_1);
				adaptor.addChild(root_1, stream_id.nextTree());
				// PLSQLCommons.g:292:32: ( id_expression )?
				if ( stream_id_expression.hasNext() ) {
					adaptor.addChild(root_1, stream_id_expression.nextTree());
				}
				stream_id_expression.reset();

				// PLSQLCommons.g:292:47: ( link_name )?
				if ( stream_link_name.hasNext() ) {
					adaptor.addChild(root_1, stream_link_name.nextTree());
				}
				stream_link_name.reset();

				// PLSQLCommons.g:292:58: ( partition_extension_clause )?
				if ( stream_partition_extension_clause.hasNext() ) {
					adaptor.addChild(root_1, stream_partition_extension_clause.nextTree());
				}
				stream_partition_extension_clause.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "tableview_name"


	public static class char_set_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "char_set_name"
	// PLSQLCommons.g:295:1: char_set_name : id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( CHAR_SET_NAME ( id_expression )+ ) ;
	public final PLSQLParser_PLSQLCommons.char_set_name_return char_set_name() throws RecognitionException {
		PLSQLParser_PLSQLCommons.char_set_name_return retval = new PLSQLParser_PLSQLCommons.char_set_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PERIOD106=null;
		ParserRuleReturnScope id_expression105 =null;
		ParserRuleReturnScope id_expression107 =null;

		Object PERIOD106_tree=null;
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");

		try {
			// PLSQLCommons.g:296:5: ( id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( CHAR_SET_NAME ( id_expression )+ ) )
			// PLSQLCommons.g:296:10: id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )*
			{
			pushFollow(FOLLOW_id_expression_in_char_set_name2233);
			id_expression105=id_expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id_expression.add(id_expression105.getTree());
			// PLSQLCommons.g:296:24: ( ( PERIOD id_expression )=> PERIOD id_expression )*
			loop35:
			while (true) {
				int alt35=2;
				int LA35_0 = input.LA(1);
				if ( (LA35_0==PERIOD) && (synpred16_PLSQLCommons())) {
					alt35=1;
				}

				switch (alt35) {
				case 1 :
					// PLSQLCommons.g:296:25: ( PERIOD id_expression )=> PERIOD id_expression
					{
					PERIOD106=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_char_set_name2243); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD106);

					pushFollow(FOLLOW_id_expression_in_char_set_name2245);
					id_expression107=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id_expression.add(id_expression107.getTree());
					}
					break;

				default :
					break loop35;
				}
			}

			// AST REWRITE
			// elements: id_expression
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 297:9: -> ^( CHAR_SET_NAME ( id_expression )+ )
			{
				// PLSQLCommons.g:297:11: ^( CHAR_SET_NAME ( id_expression )+ )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CHAR_SET_NAME, "CHAR_SET_NAME"), root_1);
				if ( !(stream_id_expression.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_id_expression.hasNext() ) {
					adaptor.addChild(root_1, stream_id_expression.nextTree());
				}
				stream_id_expression.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "char_set_name"


	public static class keep_clause_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "keep_clause"
	// PLSQLCommons.g:305:1: keep_clause : keep_key ^ LEFT_PAREN ! dense_rank_key ( first_key | last_key ) order_by_clause RIGHT_PAREN ! ( over_clause )? ;
	public final PLSQLParser_PLSQLCommons.keep_clause_return keep_clause() throws RecognitionException {
		PLSQLParser_PLSQLCommons.keep_clause_return retval = new PLSQLParser_PLSQLCommons.keep_clause_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LEFT_PAREN109=null;
		Token RIGHT_PAREN114=null;
		ParserRuleReturnScope keep_key108 =null;
		ParserRuleReturnScope dense_rank_key110 =null;
		ParserRuleReturnScope first_key111 =null;
		ParserRuleReturnScope last_key112 =null;
		ParserRuleReturnScope order_by_clause113 =null;
		ParserRuleReturnScope over_clause115 =null;

		Object LEFT_PAREN109_tree=null;
		Object RIGHT_PAREN114_tree=null;

		try {
			// PLSQLCommons.g:306:5: ( keep_key ^ LEFT_PAREN ! dense_rank_key ( first_key | last_key ) order_by_clause RIGHT_PAREN ! ( over_clause )? )
			// PLSQLCommons.g:306:9: keep_key ^ LEFT_PAREN ! dense_rank_key ( first_key | last_key ) order_by_clause RIGHT_PAREN ! ( over_clause )?
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_keep_key_in_keep_clause2287);
			keep_key108=gPLSQLParser.keep_key();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(keep_key108.getTree(), root_0);
			LEFT_PAREN109=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_keep_clause2298); if (state.failed) return retval;
			pushFollow(FOLLOW_dense_rank_key_in_keep_clause2313);
			dense_rank_key110=gPLSQLParser.dense_rank_key();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, dense_rank_key110.getTree());

			// PLSQLCommons.g:308:28: ( first_key | last_key )
			int alt36=2;
			int LA36_0 = input.LA(1);
			if ( (LA36_0==REGULAR_ID) && (((input.LT(1).getText().equalsIgnoreCase("first"))||(input.LT(1).getText().equalsIgnoreCase("last"))))) {
				int LA36_1 = input.LA(2);
				if ( ((input.LT(1).getText().equalsIgnoreCase("first"))) ) {
					alt36=1;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("last"))) ) {
					alt36=2;
				}

				else {
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 36, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

			}

			switch (alt36) {
				case 1 :
					// PLSQLCommons.g:308:29: first_key
					{
					pushFollow(FOLLOW_first_key_in_keep_clause2316);
					first_key111=gPLSQLParser.first_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, first_key111.getTree());

					}
					break;
				case 2 :
					// PLSQLCommons.g:308:39: last_key
					{
					pushFollow(FOLLOW_last_key_in_keep_clause2318);
					last_key112=gPLSQLParser.last_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, last_key112.getTree());

					}
					break;

			}

			pushFollow(FOLLOW_order_by_clause_in_keep_clause2334);
			order_by_clause113=gPLSQLParser.order_by_clause();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, order_by_clause113.getTree());

			RIGHT_PAREN114=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_keep_clause2344); if (state.failed) return retval;
			// PLSQLCommons.g:310:22: ( over_clause )?
			int alt37=2;
			alt37 = dfa37.predict(input);
			switch (alt37) {
				case 1 :
					// PLSQLCommons.g:310:22: over_clause
					{
					pushFollow(FOLLOW_over_clause_in_keep_clause2347);
					over_clause115=gPLSQLParser.over_clause();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, over_clause115.getTree());

					}
					break;

			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "keep_clause"


	public static class function_argument_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "function_argument"
	// PLSQLCommons.g:313:1: function_argument : LEFT_PAREN ( argument )? ( COMMA argument )* RIGHT_PAREN ( keep_clause )? -> ^( ARGUMENTS ( argument )* ( keep_clause )? ) ;
	public final PLSQLParser_PLSQLCommons.function_argument_return function_argument() throws RecognitionException {
		PLSQLParser_PLSQLCommons.function_argument_return retval = new PLSQLParser_PLSQLCommons.function_argument_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LEFT_PAREN116=null;
		Token COMMA118=null;
		Token RIGHT_PAREN120=null;
		ParserRuleReturnScope argument117 =null;
		ParserRuleReturnScope argument119 =null;
		ParserRuleReturnScope keep_clause121 =null;

		Object LEFT_PAREN116_tree=null;
		Object COMMA118_tree=null;
		Object RIGHT_PAREN120_tree=null;
		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
		RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
		RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
		RewriteRuleSubtreeStream stream_argument=new RewriteRuleSubtreeStream(adaptor,"rule argument");
		RewriteRuleSubtreeStream stream_keep_clause=new RewriteRuleSubtreeStream(adaptor,"rule keep_clause");

		try {
			// PLSQLCommons.g:314:5: ( LEFT_PAREN ( argument )? ( COMMA argument )* RIGHT_PAREN ( keep_clause )? -> ^( ARGUMENTS ( argument )* ( keep_clause )? ) )
			// PLSQLCommons.g:314:10: LEFT_PAREN ( argument )? ( COMMA argument )* RIGHT_PAREN ( keep_clause )?
			{
			LEFT_PAREN116=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_function_argument2368); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN116);

			// PLSQLCommons.g:315:13: ( argument )?
			int alt38=2;
			int LA38_0 = input.LA(1);
			if ( (LA38_0==APPROXIMATE_NUM_LIT||LA38_0==BINDVAR||(LA38_0 >= CHAR_STRING && LA38_0 <= COLON)||LA38_0==DELIMITED_ID||LA38_0==EXACT_NUM_LIT||LA38_0==INTRODUCER||LA38_0==LEFT_PAREN||(LA38_0 >= MINUS_SIGN && LA38_0 <= NATIONAL_CHAR_STRING_LIT)||(LA38_0 >= PLSQL_NON_RESERVED_CAST && LA38_0 <= PLSQL_NON_RESERVED_CONNECT_BY_ROOT)||LA38_0==PLUS_SIGN||LA38_0==REGULAR_ID||LA38_0==SQL92_RESERVED_ALL||LA38_0==SQL92_RESERVED_ANY||LA38_0==SQL92_RESERVED_CASE||(LA38_0 >= SQL92_RESERVED_CURSOR && LA38_0 <= SQL92_RESERVED_DATE)||LA38_0==SQL92_RESERVED_DEFAULT||LA38_0==SQL92_RESERVED_DISTINCT||(LA38_0 >= SQL92_RESERVED_EXISTS && LA38_0 <= SQL92_RESERVED_FALSE)||(LA38_0 >= SQL92_RESERVED_NOT && LA38_0 <= SQL92_RESERVED_NULL)||LA38_0==SQL92_RESERVED_PRIOR||LA38_0==SQL92_RESERVED_TRUE||LA38_0==UNSIGNED_INTEGER) ) {
				alt38=1;
			}
			switch (alt38) {
				case 1 :
					// PLSQLCommons.g:315:13: argument
					{
					pushFollow(FOLLOW_argument_in_function_argument2383);
					argument117=argument();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_argument.add(argument117.getTree());
					}
					break;

			}

			// PLSQLCommons.g:315:23: ( COMMA argument )*
			loop39:
			while (true) {
				int alt39=2;
				int LA39_0 = input.LA(1);
				if ( (LA39_0==COMMA) ) {
					alt39=1;
				}

				switch (alt39) {
				case 1 :
					// PLSQLCommons.g:315:24: COMMA argument
					{
					COMMA118=(Token)match(input,COMMA,FOLLOW_COMMA_in_function_argument2387); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COMMA.add(COMMA118);

					pushFollow(FOLLOW_argument_in_function_argument2389);
					argument119=argument();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_argument.add(argument119.getTree());
					}
					break;

				default :
					break loop39;
				}
			}

			RIGHT_PAREN120=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_function_argument2403); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN120);

			// PLSQLCommons.g:317:9: ( keep_clause )?
			int alt40=2;
			int LA40_0 = input.LA(1);
			if ( (LA40_0==REGULAR_ID) ) {
				int LA40_1 = input.LA(2);
				if ( (LA40_1==LEFT_PAREN) ) {
					int LA40_3 = input.LA(3);
					if ( (LA40_3==REGULAR_ID) ) {
						int LA40_4 = input.LA(4);
						if ( (LA40_4==REGULAR_ID) ) {
							int LA40_6 = input.LA(5);
							if ( (LA40_6==SQL92_RESERVED_ORDER) && ((input.LT(1).getText().equalsIgnoreCase("keep")))) {
								alt40=1;
							}
						}
					}
				}
			}
			switch (alt40) {
				case 1 :
					// PLSQLCommons.g:317:9: keep_clause
					{
					pushFollow(FOLLOW_keep_clause_in_function_argument2413);
					keep_clause121=keep_clause();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_keep_clause.add(keep_clause121.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: keep_clause, argument
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 318:9: -> ^( ARGUMENTS ( argument )* ( keep_clause )? )
			{
				// PLSQLCommons.g:318:12: ^( ARGUMENTS ( argument )* ( keep_clause )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ARGUMENTS, "ARGUMENTS"), root_1);
				// PLSQLCommons.g:318:24: ( argument )*
				while ( stream_argument.hasNext() ) {
					adaptor.addChild(root_1, stream_argument.nextTree());
				}
				stream_argument.reset();

				// PLSQLCommons.g:318:34: ( keep_clause )?
				if ( stream_keep_clause.hasNext() ) {
					adaptor.addChild(root_1, stream_keep_clause.nextTree());
				}
				stream_keep_clause.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "function_argument"


	public static class function_argument_analytic_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "function_argument_analytic"
	// PLSQLCommons.g:321:1: function_argument_analytic : LEFT_PAREN ( argument ( respect_or_ignore_nulls )? )? ( COMMA argument ( respect_or_ignore_nulls )? )* RIGHT_PAREN ( keep_clause )? -> ^( ARGUMENTS ( argument )* ( keep_clause )? ) ;
	public final PLSQLParser_PLSQLCommons.function_argument_analytic_return function_argument_analytic() throws RecognitionException {
		PLSQLParser_PLSQLCommons.function_argument_analytic_return retval = new PLSQLParser_PLSQLCommons.function_argument_analytic_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LEFT_PAREN122=null;
		Token COMMA125=null;
		Token RIGHT_PAREN128=null;
		ParserRuleReturnScope argument123 =null;
		ParserRuleReturnScope respect_or_ignore_nulls124 =null;
		ParserRuleReturnScope argument126 =null;
		ParserRuleReturnScope respect_or_ignore_nulls127 =null;
		ParserRuleReturnScope keep_clause129 =null;

		Object LEFT_PAREN122_tree=null;
		Object COMMA125_tree=null;
		Object RIGHT_PAREN128_tree=null;
		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
		RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
		RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
		RewriteRuleSubtreeStream stream_argument=new RewriteRuleSubtreeStream(adaptor,"rule argument");
		RewriteRuleSubtreeStream stream_respect_or_ignore_nulls=new RewriteRuleSubtreeStream(adaptor,"rule respect_or_ignore_nulls");
		RewriteRuleSubtreeStream stream_keep_clause=new RewriteRuleSubtreeStream(adaptor,"rule keep_clause");

		try {
			// PLSQLCommons.g:322:5: ( LEFT_PAREN ( argument ( respect_or_ignore_nulls )? )? ( COMMA argument ( respect_or_ignore_nulls )? )* RIGHT_PAREN ( keep_clause )? -> ^( ARGUMENTS ( argument )* ( keep_clause )? ) )
			// PLSQLCommons.g:322:10: LEFT_PAREN ( argument ( respect_or_ignore_nulls )? )? ( COMMA argument ( respect_or_ignore_nulls )? )* RIGHT_PAREN ( keep_clause )?
			{
			LEFT_PAREN122=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_function_argument_analytic2454); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN122);

			// PLSQLCommons.g:323:13: ( argument ( respect_or_ignore_nulls )? )?
			int alt42=2;
			int LA42_0 = input.LA(1);
			if ( (LA42_0==APPROXIMATE_NUM_LIT||LA42_0==BINDVAR||(LA42_0 >= CHAR_STRING && LA42_0 <= COLON)||LA42_0==DELIMITED_ID||LA42_0==EXACT_NUM_LIT||LA42_0==INTRODUCER||LA42_0==LEFT_PAREN||(LA42_0 >= MINUS_SIGN && LA42_0 <= NATIONAL_CHAR_STRING_LIT)||(LA42_0 >= PLSQL_NON_RESERVED_CAST && LA42_0 <= PLSQL_NON_RESERVED_CONNECT_BY_ROOT)||LA42_0==PLUS_SIGN||LA42_0==REGULAR_ID||LA42_0==SQL92_RESERVED_ALL||LA42_0==SQL92_RESERVED_ANY||LA42_0==SQL92_RESERVED_CASE||(LA42_0 >= SQL92_RESERVED_CURSOR && LA42_0 <= SQL92_RESERVED_DATE)||LA42_0==SQL92_RESERVED_DEFAULT||LA42_0==SQL92_RESERVED_DISTINCT||(LA42_0 >= SQL92_RESERVED_EXISTS && LA42_0 <= SQL92_RESERVED_FALSE)||(LA42_0 >= SQL92_RESERVED_NOT && LA42_0 <= SQL92_RESERVED_NULL)||LA42_0==SQL92_RESERVED_PRIOR||LA42_0==SQL92_RESERVED_TRUE||LA42_0==UNSIGNED_INTEGER) ) {
				alt42=1;
			}
			switch (alt42) {
				case 1 :
					// PLSQLCommons.g:323:14: argument ( respect_or_ignore_nulls )?
					{
					pushFollow(FOLLOW_argument_in_function_argument_analytic2469);
					argument123=argument();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_argument.add(argument123.getTree());
					// PLSQLCommons.g:323:23: ( respect_or_ignore_nulls )?
					int alt41=2;
					int LA41_0 = input.LA(1);
					if ( (LA41_0==REGULAR_ID) && (((input.LT(1).getText().equalsIgnoreCase("respect"))||(input.LT(1).getText().equalsIgnoreCase("ignore"))))) {
						alt41=1;
					}
					switch (alt41) {
						case 1 :
							// PLSQLCommons.g:323:23: respect_or_ignore_nulls
							{
							pushFollow(FOLLOW_respect_or_ignore_nulls_in_function_argument_analytic2471);
							respect_or_ignore_nulls124=respect_or_ignore_nulls();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_respect_or_ignore_nulls.add(respect_or_ignore_nulls124.getTree());
							}
							break;

					}

					}
					break;

			}

			// PLSQLCommons.g:324:13: ( COMMA argument ( respect_or_ignore_nulls )? )*
			loop44:
			while (true) {
				int alt44=2;
				int LA44_0 = input.LA(1);
				if ( (LA44_0==COMMA) ) {
					alt44=1;
				}

				switch (alt44) {
				case 1 :
					// PLSQLCommons.g:324:14: COMMA argument ( respect_or_ignore_nulls )?
					{
					COMMA125=(Token)match(input,COMMA,FOLLOW_COMMA_in_function_argument_analytic2489); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COMMA.add(COMMA125);

					pushFollow(FOLLOW_argument_in_function_argument_analytic2491);
					argument126=argument();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_argument.add(argument126.getTree());
					// PLSQLCommons.g:324:29: ( respect_or_ignore_nulls )?
					int alt43=2;
					int LA43_0 = input.LA(1);
					if ( (LA43_0==REGULAR_ID) && (((input.LT(1).getText().equalsIgnoreCase("respect"))||(input.LT(1).getText().equalsIgnoreCase("ignore"))))) {
						alt43=1;
					}
					switch (alt43) {
						case 1 :
							// PLSQLCommons.g:324:29: respect_or_ignore_nulls
							{
							pushFollow(FOLLOW_respect_or_ignore_nulls_in_function_argument_analytic2493);
							respect_or_ignore_nulls127=respect_or_ignore_nulls();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_respect_or_ignore_nulls.add(respect_or_ignore_nulls127.getTree());
							}
							break;

					}

					}
					break;

				default :
					break loop44;
				}
			}

			RIGHT_PAREN128=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_function_argument_analytic2508); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN128);

			// PLSQLCommons.g:326:10: ( keep_clause )?
			int alt45=2;
			int LA45_0 = input.LA(1);
			if ( (LA45_0==REGULAR_ID) ) {
				int LA45_1 = input.LA(2);
				if ( (LA45_1==LEFT_PAREN) ) {
					int LA45_3 = input.LA(3);
					if ( (LA45_3==REGULAR_ID) ) {
						int LA45_10 = input.LA(4);
						if ( (LA45_10==REGULAR_ID) ) {
							int LA45_15 = input.LA(5);
							if ( (LA45_15==SQL92_RESERVED_ORDER) && ((input.LT(1).getText().equalsIgnoreCase("keep")))) {
								alt45=1;
							}
						}
					}
				}
			}
			switch (alt45) {
				case 1 :
					// PLSQLCommons.g:326:10: keep_clause
					{
					pushFollow(FOLLOW_keep_clause_in_function_argument_analytic2519);
					keep_clause129=keep_clause();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_keep_clause.add(keep_clause129.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: argument, keep_clause
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 327:10: -> ^( ARGUMENTS ( argument )* ( keep_clause )? )
			{
				// PLSQLCommons.g:327:13: ^( ARGUMENTS ( argument )* ( keep_clause )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ARGUMENTS, "ARGUMENTS"), root_1);
				// PLSQLCommons.g:327:25: ( argument )*
				while ( stream_argument.hasNext() ) {
					adaptor.addChild(root_1, stream_argument.nextTree());
				}
				stream_argument.reset();

				// PLSQLCommons.g:327:35: ( keep_clause )?
				if ( stream_keep_clause.hasNext() ) {
					adaptor.addChild(root_1, stream_keep_clause.nextTree());
				}
				stream_keep_clause.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "function_argument_analytic"


	public static class function_argument_modeling_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "function_argument_modeling"
	// PLSQLCommons.g:330:1: function_argument_modeling : LEFT_PAREN column_name ( COMMA ( numeric | null_key ) ( COMMA ( numeric | null_key ) )? )? using_key ( ( tableview_name PERIOD ASTERISK )=> tableview_name PERIOD ASTERISK | ASTERISK | expression ( column_alias )? ( COMMA expression ( column_alias )? )* ) RIGHT_PAREN ( keep_clause )? -> ^( ARGUMENTS column_name ( keep_clause )? ) ;
	public final PLSQLParser_PLSQLCommons.function_argument_modeling_return function_argument_modeling() throws RecognitionException {
		PLSQLParser_PLSQLCommons.function_argument_modeling_return retval = new PLSQLParser_PLSQLCommons.function_argument_modeling_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LEFT_PAREN130=null;
		Token COMMA132=null;
		Token COMMA135=null;
		Token PERIOD140=null;
		Token ASTERISK141=null;
		Token ASTERISK142=null;
		Token COMMA145=null;
		Token RIGHT_PAREN148=null;
		ParserRuleReturnScope column_name131 =null;
		ParserRuleReturnScope numeric133 =null;
		ParserRuleReturnScope null_key134 =null;
		ParserRuleReturnScope numeric136 =null;
		ParserRuleReturnScope null_key137 =null;
		ParserRuleReturnScope using_key138 =null;
		ParserRuleReturnScope tableview_name139 =null;
		ParserRuleReturnScope expression143 =null;
		ParserRuleReturnScope column_alias144 =null;
		ParserRuleReturnScope expression146 =null;
		ParserRuleReturnScope column_alias147 =null;
		ParserRuleReturnScope keep_clause149 =null;

		Object LEFT_PAREN130_tree=null;
		Object COMMA132_tree=null;
		Object COMMA135_tree=null;
		Object PERIOD140_tree=null;
		Object ASTERISK141_tree=null;
		Object ASTERISK142_tree=null;
		Object COMMA145_tree=null;
		Object RIGHT_PAREN148_tree=null;
		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
		RewriteRuleTokenStream stream_ASTERISK=new RewriteRuleTokenStream(adaptor,"token ASTERISK");
		RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
		RewriteRuleSubtreeStream stream_tableview_name=new RewriteRuleSubtreeStream(adaptor,"rule tableview_name");
		RewriteRuleSubtreeStream stream_null_key=new RewriteRuleSubtreeStream(adaptor,"rule null_key");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_column_alias=new RewriteRuleSubtreeStream(adaptor,"rule column_alias");
		RewriteRuleSubtreeStream stream_column_name=new RewriteRuleSubtreeStream(adaptor,"rule column_name");
		RewriteRuleSubtreeStream stream_numeric=new RewriteRuleSubtreeStream(adaptor,"rule numeric");
		RewriteRuleSubtreeStream stream_keep_clause=new RewriteRuleSubtreeStream(adaptor,"rule keep_clause");
		RewriteRuleSubtreeStream stream_using_key=new RewriteRuleSubtreeStream(adaptor,"rule using_key");

		try {
			// PLSQLCommons.g:331:5: ( LEFT_PAREN column_name ( COMMA ( numeric | null_key ) ( COMMA ( numeric | null_key ) )? )? using_key ( ( tableview_name PERIOD ASTERISK )=> tableview_name PERIOD ASTERISK | ASTERISK | expression ( column_alias )? ( COMMA expression ( column_alias )? )* ) RIGHT_PAREN ( keep_clause )? -> ^( ARGUMENTS column_name ( keep_clause )? ) )
			// PLSQLCommons.g:331:10: LEFT_PAREN column_name ( COMMA ( numeric | null_key ) ( COMMA ( numeric | null_key ) )? )? using_key ( ( tableview_name PERIOD ASTERISK )=> tableview_name PERIOD ASTERISK | ASTERISK | expression ( column_alias )? ( COMMA expression ( column_alias )? )* ) RIGHT_PAREN ( keep_clause )?
			{
			LEFT_PAREN130=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_function_argument_modeling2561); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN130);

			pushFollow(FOLLOW_column_name_in_function_argument_modeling2575);
			column_name131=column_name();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_column_name.add(column_name131.getTree());
			// PLSQLCommons.g:332:25: ( COMMA ( numeric | null_key ) ( COMMA ( numeric | null_key ) )? )?
			int alt49=2;
			int LA49_0 = input.LA(1);
			if ( (LA49_0==COMMA) ) {
				alt49=1;
			}
			switch (alt49) {
				case 1 :
					// PLSQLCommons.g:332:26: COMMA ( numeric | null_key ) ( COMMA ( numeric | null_key ) )?
					{
					COMMA132=(Token)match(input,COMMA,FOLLOW_COMMA_in_function_argument_modeling2578); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COMMA.add(COMMA132);

					// PLSQLCommons.g:332:32: ( numeric | null_key )
					int alt46=2;
					int LA46_0 = input.LA(1);
					if ( (LA46_0==APPROXIMATE_NUM_LIT||LA46_0==EXACT_NUM_LIT||LA46_0==UNSIGNED_INTEGER) ) {
						alt46=1;
					}
					else if ( (LA46_0==SQL92_RESERVED_NULL) ) {
						alt46=2;
					}

					else {
						if (state.backtracking>0) {state.failed=true; return retval;}
						NoViableAltException nvae =
							new NoViableAltException("", 46, 0, input);
						throw nvae;
					}

					switch (alt46) {
						case 1 :
							// PLSQLCommons.g:332:33: numeric
							{
							pushFollow(FOLLOW_numeric_in_function_argument_modeling2581);
							numeric133=numeric();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_numeric.add(numeric133.getTree());
							}
							break;
						case 2 :
							// PLSQLCommons.g:332:41: null_key
							{
							pushFollow(FOLLOW_null_key_in_function_argument_modeling2583);
							null_key134=gPLSQLParser.null_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_null_key.add(null_key134.getTree());
							}
							break;

					}

					// PLSQLCommons.g:332:51: ( COMMA ( numeric | null_key ) )?
					int alt48=2;
					int LA48_0 = input.LA(1);
					if ( (LA48_0==COMMA) ) {
						alt48=1;
					}
					switch (alt48) {
						case 1 :
							// PLSQLCommons.g:332:52: COMMA ( numeric | null_key )
							{
							COMMA135=(Token)match(input,COMMA,FOLLOW_COMMA_in_function_argument_modeling2587); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_COMMA.add(COMMA135);

							// PLSQLCommons.g:332:58: ( numeric | null_key )
							int alt47=2;
							int LA47_0 = input.LA(1);
							if ( (LA47_0==APPROXIMATE_NUM_LIT||LA47_0==EXACT_NUM_LIT||LA47_0==UNSIGNED_INTEGER) ) {
								alt47=1;
							}
							else if ( (LA47_0==SQL92_RESERVED_NULL) ) {
								alt47=2;
							}

							else {
								if (state.backtracking>0) {state.failed=true; return retval;}
								NoViableAltException nvae =
									new NoViableAltException("", 47, 0, input);
								throw nvae;
							}

							switch (alt47) {
								case 1 :
									// PLSQLCommons.g:332:59: numeric
									{
									pushFollow(FOLLOW_numeric_in_function_argument_modeling2590);
									numeric136=numeric();
									state._fsp--;
									if (state.failed) return retval;
									if ( state.backtracking==0 ) stream_numeric.add(numeric136.getTree());
									}
									break;
								case 2 :
									// PLSQLCommons.g:332:67: null_key
									{
									pushFollow(FOLLOW_null_key_in_function_argument_modeling2592);
									null_key137=gPLSQLParser.null_key();
									state._fsp--;
									if (state.failed) return retval;
									if ( state.backtracking==0 ) stream_null_key.add(null_key137.getTree());
									}
									break;

							}

							}
							break;

					}

					}
					break;

			}

			pushFollow(FOLLOW_using_key_in_function_argument_modeling2613);
			using_key138=gPLSQLParser.using_key();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_using_key.add(using_key138.getTree());
			// PLSQLCommons.g:334:17: ( ( tableview_name PERIOD ASTERISK )=> tableview_name PERIOD ASTERISK | ASTERISK | expression ( column_alias )? ( COMMA expression ( column_alias )? )* )
			int alt53=3;
			switch ( input.LA(1) ) {
			case INTRODUCER:
				{
				int LA53_1 = input.LA(2);
				if ( (synpred17_PLSQLCommons()) ) {
					alt53=1;
				}
				else if ( (true) ) {
					alt53=3;
				}

				}
				break;
			case REGULAR_ID:
				{
				int LA53_2 = input.LA(2);
				if ( (synpred17_PLSQLCommons()) ) {
					alt53=1;
				}
				else if ( (true) ) {
					alt53=3;
				}

				}
				break;
			case DELIMITED_ID:
				{
				int LA53_3 = input.LA(2);
				if ( (synpred17_PLSQLCommons()) ) {
					alt53=1;
				}
				else if ( (true) ) {
					alt53=3;
				}

				}
				break;
			case ASTERISK:
				{
				alt53=2;
				}
				break;
			case APPROXIMATE_NUM_LIT:
			case BINDVAR:
			case CHAR_STRING:
			case CHAR_STRING_PERL:
			case COLON:
			case EXACT_NUM_LIT:
			case LEFT_PAREN:
			case MINUS_SIGN:
			case NATIONAL_CHAR_STRING_LIT:
			case PLSQL_NON_RESERVED_CAST:
			case PLSQL_NON_RESERVED_CONNECT_BY_ROOT:
			case PLUS_SIGN:
			case SQL92_RESERVED_ALL:
			case SQL92_RESERVED_ANY:
			case SQL92_RESERVED_CASE:
			case SQL92_RESERVED_CURSOR:
			case SQL92_RESERVED_DATE:
			case SQL92_RESERVED_DEFAULT:
			case SQL92_RESERVED_DISTINCT:
			case SQL92_RESERVED_EXISTS:
			case SQL92_RESERVED_FALSE:
			case SQL92_RESERVED_NOT:
			case SQL92_RESERVED_NULL:
			case SQL92_RESERVED_PRIOR:
			case SQL92_RESERVED_TRUE:
			case UNSIGNED_INTEGER:
				{
				alt53=3;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 53, 0, input);
				throw nvae;
			}
			switch (alt53) {
				case 1 :
					// PLSQLCommons.g:334:19: ( tableview_name PERIOD ASTERISK )=> tableview_name PERIOD ASTERISK
					{
					pushFollow(FOLLOW_tableview_name_in_function_argument_modeling2642);
					tableview_name139=tableview_name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_tableview_name.add(tableview_name139.getTree());
					PERIOD140=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_function_argument_modeling2644); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD140);

					ASTERISK141=(Token)match(input,ASTERISK,FOLLOW_ASTERISK_in_function_argument_modeling2646); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_ASTERISK.add(ASTERISK141);

					}
					break;
				case 2 :
					// PLSQLCommons.g:335:19: ASTERISK
					{
					ASTERISK142=(Token)match(input,ASTERISK,FOLLOW_ASTERISK_in_function_argument_modeling2666); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_ASTERISK.add(ASTERISK142);

					}
					break;
				case 3 :
					// PLSQLCommons.g:336:19: expression ( column_alias )? ( COMMA expression ( column_alias )? )*
					{
					pushFollow(FOLLOW_expression_in_function_argument_modeling2686);
					expression143=gPLSQLParser.expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression143.getTree());
					// PLSQLCommons.g:336:30: ( column_alias )?
					int alt50=2;
					int LA50_0 = input.LA(1);
					if ( ((LA50_0 >= CHAR_STRING && LA50_0 <= CHAR_STRING_PERL)||LA50_0==DELIMITED_ID||LA50_0==INTRODUCER||LA50_0==NATIONAL_CHAR_STRING_LIT||LA50_0==REGULAR_ID||LA50_0==SQL92_RESERVED_AS) ) {
						alt50=1;
					}
					switch (alt50) {
						case 1 :
							// PLSQLCommons.g:336:30: column_alias
							{
							pushFollow(FOLLOW_column_alias_in_function_argument_modeling2688);
							column_alias144=column_alias();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_column_alias.add(column_alias144.getTree());
							}
							break;

					}

					// PLSQLCommons.g:336:44: ( COMMA expression ( column_alias )? )*
					loop52:
					while (true) {
						int alt52=2;
						int LA52_0 = input.LA(1);
						if ( (LA52_0==COMMA) ) {
							alt52=1;
						}

						switch (alt52) {
						case 1 :
							// PLSQLCommons.g:336:45: COMMA expression ( column_alias )?
							{
							COMMA145=(Token)match(input,COMMA,FOLLOW_COMMA_in_function_argument_modeling2692); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_COMMA.add(COMMA145);

							pushFollow(FOLLOW_expression_in_function_argument_modeling2694);
							expression146=gPLSQLParser.expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(expression146.getTree());
							// PLSQLCommons.g:336:62: ( column_alias )?
							int alt51=2;
							int LA51_0 = input.LA(1);
							if ( ((LA51_0 >= CHAR_STRING && LA51_0 <= CHAR_STRING_PERL)||LA51_0==DELIMITED_ID||LA51_0==INTRODUCER||LA51_0==NATIONAL_CHAR_STRING_LIT||LA51_0==REGULAR_ID||LA51_0==SQL92_RESERVED_AS) ) {
								alt51=1;
							}
							switch (alt51) {
								case 1 :
									// PLSQLCommons.g:336:62: column_alias
									{
									pushFollow(FOLLOW_column_alias_in_function_argument_modeling2696);
									column_alias147=column_alias();
									state._fsp--;
									if (state.failed) return retval;
									if ( state.backtracking==0 ) stream_column_alias.add(column_alias147.getTree());
									}
									break;

							}

							}
							break;

						default :
							break loop52;
						}
					}

					}
					break;

			}

			RIGHT_PAREN148=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_function_argument_modeling2728); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN148);

			// PLSQLCommons.g:339:10: ( keep_clause )?
			int alt54=2;
			int LA54_0 = input.LA(1);
			if ( (LA54_0==REGULAR_ID) ) {
				int LA54_1 = input.LA(2);
				if ( (LA54_1==LEFT_PAREN) ) {
					int LA54_3 = input.LA(3);
					if ( (LA54_3==REGULAR_ID) ) {
						int LA54_10 = input.LA(4);
						if ( (LA54_10==REGULAR_ID) ) {
							int LA54_14 = input.LA(5);
							if ( (LA54_14==SQL92_RESERVED_ORDER) && ((input.LT(1).getText().equalsIgnoreCase("keep")))) {
								alt54=1;
							}
						}
					}
				}
			}
			switch (alt54) {
				case 1 :
					// PLSQLCommons.g:339:10: keep_clause
					{
					pushFollow(FOLLOW_keep_clause_in_function_argument_modeling2739);
					keep_clause149=keep_clause();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_keep_clause.add(keep_clause149.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: column_name, keep_clause
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 340:10: -> ^( ARGUMENTS column_name ( keep_clause )? )
			{
				// PLSQLCommons.g:340:13: ^( ARGUMENTS column_name ( keep_clause )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ARGUMENTS, "ARGUMENTS"), root_1);
				adaptor.addChild(root_1, stream_column_name.nextTree());
				// PLSQLCommons.g:340:37: ( keep_clause )?
				if ( stream_keep_clause.hasNext() ) {
					adaptor.addChild(root_1, stream_keep_clause.nextTree());
				}
				stream_keep_clause.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "function_argument_modeling"


	public static class respect_or_ignore_nulls_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "respect_or_ignore_nulls"
	// PLSQLCommons.g:343:1: respect_or_ignore_nulls : ( respect_key | ignore_key ) nulls_key ;
	public final PLSQLParser_PLSQLCommons.respect_or_ignore_nulls_return respect_or_ignore_nulls() throws RecognitionException {
		PLSQLParser_PLSQLCommons.respect_or_ignore_nulls_return retval = new PLSQLParser_PLSQLCommons.respect_or_ignore_nulls_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope respect_key150 =null;
		ParserRuleReturnScope ignore_key151 =null;
		ParserRuleReturnScope nulls_key152 =null;


		try {
			// PLSQLCommons.g:344:5: ( ( respect_key | ignore_key ) nulls_key )
			// PLSQLCommons.g:344:10: ( respect_key | ignore_key ) nulls_key
			{
			root_0 = (Object)adaptor.nil();


			// PLSQLCommons.g:344:10: ( respect_key | ignore_key )
			int alt55=2;
			int LA55_0 = input.LA(1);
			if ( (LA55_0==REGULAR_ID) && (((input.LT(1).getText().equalsIgnoreCase("respect"))||(input.LT(1).getText().equalsIgnoreCase("ignore"))))) {
				int LA55_1 = input.LA(2);
				if ( ((input.LT(1).getText().equalsIgnoreCase("respect"))) ) {
					alt55=1;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("ignore"))) ) {
					alt55=2;
				}

				else {
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 55, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

			}

			switch (alt55) {
				case 1 :
					// PLSQLCommons.g:344:11: respect_key
					{
					pushFollow(FOLLOW_respect_key_in_respect_or_ignore_nulls2781);
					respect_key150=gPLSQLParser.respect_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, respect_key150.getTree());

					}
					break;
				case 2 :
					// PLSQLCommons.g:344:25: ignore_key
					{
					pushFollow(FOLLOW_ignore_key_in_respect_or_ignore_nulls2785);
					ignore_key151=gPLSQLParser.ignore_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, ignore_key151.getTree());

					}
					break;

			}

			pushFollow(FOLLOW_nulls_key_in_respect_or_ignore_nulls2788);
			nulls_key152=gPLSQLParser.nulls_key();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, nulls_key152.getTree());

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "respect_or_ignore_nulls"


	public static class argument_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "argument"
	// PLSQLCommons.g:347:1: argument : ( ( id EQUALS_OP GREATER_THAN_OP )=> id EQUALS_OP GREATER_THAN_OP )? expression_wrapper -> {mode == 1}? ^( ARGUMENT expression_wrapper ^( PARAMETER_NAME[$EQUALS_OP] id ) ) -> ^( ARGUMENT expression_wrapper ) ;
	public final PLSQLParser_PLSQLCommons.argument_return argument() throws RecognitionException {
		PLSQLParser_PLSQLCommons.argument_return retval = new PLSQLParser_PLSQLCommons.argument_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token EQUALS_OP154=null;
		Token GREATER_THAN_OP155=null;
		ParserRuleReturnScope id153 =null;
		ParserRuleReturnScope expression_wrapper156 =null;

		Object EQUALS_OP154_tree=null;
		Object GREATER_THAN_OP155_tree=null;
		RewriteRuleTokenStream stream_EQUALS_OP=new RewriteRuleTokenStream(adaptor,"token EQUALS_OP");
		RewriteRuleTokenStream stream_GREATER_THAN_OP=new RewriteRuleTokenStream(adaptor,"token GREATER_THAN_OP");
		RewriteRuleSubtreeStream stream_expression_wrapper=new RewriteRuleSubtreeStream(adaptor,"rule expression_wrapper");
		RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");

		    int mode = 0;    
		try {
			// PLSQLCommons.g:349:5: ( ( ( id EQUALS_OP GREATER_THAN_OP )=> id EQUALS_OP GREATER_THAN_OP )? expression_wrapper -> {mode == 1}? ^( ARGUMENT expression_wrapper ^( PARAMETER_NAME[$EQUALS_OP] id ) ) -> ^( ARGUMENT expression_wrapper ) )
			// PLSQLCommons.g:349:10: ( ( id EQUALS_OP GREATER_THAN_OP )=> id EQUALS_OP GREATER_THAN_OP )? expression_wrapper
			{
			// PLSQLCommons.g:349:10: ( ( id EQUALS_OP GREATER_THAN_OP )=> id EQUALS_OP GREATER_THAN_OP )?
			int alt56=2;
			alt56 = dfa56.predict(input);
			switch (alt56) {
				case 1 :
					// PLSQLCommons.g:349:11: ( id EQUALS_OP GREATER_THAN_OP )=> id EQUALS_OP GREATER_THAN_OP
					{
					pushFollow(FOLLOW_id_in_argument2826);
					id153=id();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id.add(id153.getTree());
					EQUALS_OP154=(Token)match(input,EQUALS_OP,FOLLOW_EQUALS_OP_in_argument2828); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_EQUALS_OP.add(EQUALS_OP154);

					GREATER_THAN_OP155=(Token)match(input,GREATER_THAN_OP,FOLLOW_GREATER_THAN_OP_in_argument2830); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_GREATER_THAN_OP.add(GREATER_THAN_OP155);

					if ( state.backtracking==0 ) {mode = 1;}
					}
					break;

			}

			pushFollow(FOLLOW_expression_wrapper_in_argument2836);
			expression_wrapper156=gPLSQLParser.expression_wrapper();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression_wrapper.add(expression_wrapper156.getTree());
			// AST REWRITE
			// elements: expression_wrapper, id, expression_wrapper
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 350:9: -> {mode == 1}? ^( ARGUMENT expression_wrapper ^( PARAMETER_NAME[$EQUALS_OP] id ) )
			if (mode == 1) {
				// PLSQLCommons.g:350:24: ^( ARGUMENT expression_wrapper ^( PARAMETER_NAME[$EQUALS_OP] id ) )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ARGUMENT, "ARGUMENT"), root_1);
				adaptor.addChild(root_1, stream_expression_wrapper.nextTree());
				// PLSQLCommons.g:350:54: ^( PARAMETER_NAME[$EQUALS_OP] id )
				{
				Object root_2 = (Object)adaptor.nil();
				root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(PARAMETER_NAME, EQUALS_OP154), root_2);
				adaptor.addChild(root_2, stream_id.nextTree());
				adaptor.addChild(root_1, root_2);
				}

				adaptor.addChild(root_0, root_1);
				}

			}

			else // 351:9: -> ^( ARGUMENT expression_wrapper )
			{
				// PLSQLCommons.g:351:12: ^( ARGUMENT expression_wrapper )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ARGUMENT, "ARGUMENT"), root_1);
				adaptor.addChild(root_1, stream_expression_wrapper.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "argument"


	public static class type_spec_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "type_spec"
	// PLSQLCommons.g:354:1: type_spec : ( datatype | ( ref_key )? type_name ( percent_rowtype_key | percent_type_key )? -> ^( CUSTOM_TYPE type_name ( ref_key )? ( percent_rowtype_key )? ( percent_type_key )? ) );
	public final PLSQLParser_PLSQLCommons.type_spec_return type_spec() throws RecognitionException {
		PLSQLParser_PLSQLCommons.type_spec_return retval = new PLSQLParser_PLSQLCommons.type_spec_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope datatype157 =null;
		ParserRuleReturnScope ref_key158 =null;
		ParserRuleReturnScope type_name159 =null;
		ParserRuleReturnScope percent_rowtype_key160 =null;
		ParserRuleReturnScope percent_type_key161 =null;

		RewriteRuleSubtreeStream stream_type_name=new RewriteRuleSubtreeStream(adaptor,"rule type_name");
		RewriteRuleSubtreeStream stream_ref_key=new RewriteRuleSubtreeStream(adaptor,"rule ref_key");
		RewriteRuleSubtreeStream stream_percent_rowtype_key=new RewriteRuleSubtreeStream(adaptor,"rule percent_rowtype_key");
		RewriteRuleSubtreeStream stream_percent_type_key=new RewriteRuleSubtreeStream(adaptor,"rule percent_type_key");

		try {
			// PLSQLCommons.g:355:5: ( datatype | ( ref_key )? type_name ( percent_rowtype_key | percent_type_key )? -> ^( CUSTOM_TYPE type_name ( ref_key )? ( percent_rowtype_key )? ( percent_type_key )? ) )
			int alt59=2;
			switch ( input.LA(1) ) {
			case REGULAR_ID:
				{
				int LA59_1 = input.LA(2);
				if ( (((input.LT(1).getText().equalsIgnoreCase("positiven"))||(input.LT(1).getText().equalsIgnoreCase("hour"))||(input.LT(1).getText().equalsIgnoreCase("timestamp_ltz_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("mlslabel"))||(input.LT(1).getText().equalsIgnoreCase("bfile"))||(input.LT(1).getText().equalsIgnoreCase("timezone_minute"))||(input.LT(1).getText().equalsIgnoreCase("urowid"))||(input.LT(1).getText().equalsIgnoreCase("pls_integer"))||(input.LT(1).getText().equalsIgnoreCase("double"))||(input.LT(1).getText().equalsIgnoreCase("varchar"))||(input.LT(1).getText().equalsIgnoreCase("timestamp_tz_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("dec"))||(input.LT(1).getText().equalsIgnoreCase("smallint"))||(input.LT(1).getText().equalsIgnoreCase("signtype"))||(input.LT(1).getText().equalsIgnoreCase("character"))||(input.LT(1).getText().equalsIgnoreCase("nvarchar2"))||(input.LT(1).getText().equalsIgnoreCase("decimal"))||(input.LT(1).getText().equalsIgnoreCase("blob"))||(input.LT(1).getText().equalsIgnoreCase("timezone_hour"))||(input.LT(1).getText().equalsIgnoreCase("binary_float"))||(input.LT(1).getText().equalsIgnoreCase("yminterval_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("integer"))||(input.LT(1).getText().equalsIgnoreCase("nchar"))||(input.LT(1).getText().equalsIgnoreCase("day"))||(input.LT(1).getText().equalsIgnoreCase("varchar2"))||(input.LT(1).getText().equalsIgnoreCase("natural"))||(input.LT(1).getText().equalsIgnoreCase("binary_double"))||(input.LT(1).getText().equalsIgnoreCase("string"))||(input.LT(1).getText().equalsIgnoreCase("real"))||(input.LT(1).getText().equalsIgnoreCase("nclob"))||(input.LT(1).getText().equalsIgnoreCase("timestamp"))||(input.LT(1).getText().equalsIgnoreCase("timestamp_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("raw"))||(input.LT(1).getText().equalsIgnoreCase("interval"))||(input.LT(1).getText().equalsIgnoreCase("year"))||(input.LT(1).getText().equalsIgnoreCase("rowid"))||(input.LT(1).getText().equalsIgnoreCase("timezone_region"))||(input.LT(1).getText().equalsIgnoreCase("timezone_abbr"))||(input.LT(1).getText().equalsIgnoreCase("simple_integer"))||(input.LT(1).getText().equalsIgnoreCase("int"))||(input.LT(1).getText().equalsIgnoreCase("month"))||(input.LT(1).getText().equalsIgnoreCase("minute"))||(input.LT(1).getText().equalsIgnoreCase("naturaln"))||(input.LT(1).getText().equalsIgnoreCase("dsinterval_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("char"))||(input.LT(1).getText().equalsIgnoreCase("second"))||(input.LT(1).getText().equalsIgnoreCase("number"))||(input.LT(1).getText().equalsIgnoreCase("float"))||(input.LT(1).getText().equalsIgnoreCase("positive"))||(input.LT(1).getText().equalsIgnoreCase("numeric"))||(input.LT(1).getText().equalsIgnoreCase("boolean"))||(input.LT(1).getText().equalsIgnoreCase("clob"))||(input.LT(1).getText().equalsIgnoreCase("binary_integer"))||(input.LT(1).getText().equalsIgnoreCase("long")))) ) {
					alt59=1;
				}
				else if ( (true) ) {
					alt59=2;
				}

				}
				break;
			case SQL92_RESERVED_DATE:
				{
				alt59=1;
				}
				break;
			case DELIMITED_ID:
				{
				alt59=2;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 59, 0, input);
				throw nvae;
			}
			switch (alt59) {
				case 1 :
					// PLSQLCommons.g:355:11: datatype
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_datatype_in_type_spec2897);
					datatype157=datatype();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, datatype157.getTree());

					}
					break;
				case 2 :
					// PLSQLCommons.g:356:10: ( ref_key )? type_name ( percent_rowtype_key | percent_type_key )?
					{
					// PLSQLCommons.g:356:10: ( ref_key )?
					int alt57=2;
					int LA57_0 = input.LA(1);
					if ( (LA57_0==REGULAR_ID) ) {
						int LA57_1 = input.LA(2);
						if ( (LA57_1==REGULAR_ID) ) {
							int LA57_3 = input.LA(3);
							if ( ((input.LT(1).getText().equalsIgnoreCase("ref"))) ) {
								alt57=1;
							}
						}
						else if ( (LA57_1==DELIMITED_ID) && ((input.LT(1).getText().equalsIgnoreCase("ref")))) {
							alt57=1;
						}
					}
					switch (alt57) {
						case 1 :
							// PLSQLCommons.g:356:10: ref_key
							{
							pushFollow(FOLLOW_ref_key_in_type_spec2908);
							ref_key158=gPLSQLParser.ref_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_ref_key.add(ref_key158.getTree());
							}
							break;

					}

					pushFollow(FOLLOW_type_name_in_type_spec2911);
					type_name159=type_name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_type_name.add(type_name159.getTree());
					// PLSQLCommons.g:356:29: ( percent_rowtype_key | percent_type_key )?
					int alt58=3;
					int LA58_0 = input.LA(1);
					if ( (LA58_0==PERCENT) && (((input.LT(2).getText().equalsIgnoreCase("type"))||(input.LT(2).getText().equalsIgnoreCase("rowtype"))))) {
						int LA58_1 = input.LA(2);
						if ( (LA58_1==REGULAR_ID) && (((input.LT(2).getText().equalsIgnoreCase("type"))||(input.LT(2).getText().equalsIgnoreCase("rowtype"))))) {
							int LA58_3 = input.LA(3);
							if ( ((input.LT(2).getText().equalsIgnoreCase("rowtype"))) ) {
								alt58=1;
							}
							else if ( ((input.LT(2).getText().equalsIgnoreCase("type"))) ) {
								alt58=2;
							}
						}
					}
					switch (alt58) {
						case 1 :
							// PLSQLCommons.g:356:30: percent_rowtype_key
							{
							pushFollow(FOLLOW_percent_rowtype_key_in_type_spec2914);
							percent_rowtype_key160=gPLSQLParser.percent_rowtype_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_percent_rowtype_key.add(percent_rowtype_key160.getTree());
							}
							break;
						case 2 :
							// PLSQLCommons.g:356:50: percent_type_key
							{
							pushFollow(FOLLOW_percent_type_key_in_type_spec2916);
							percent_type_key161=gPLSQLParser.percent_type_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_percent_type_key.add(percent_type_key161.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: percent_type_key, ref_key, percent_rowtype_key, type_name
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 356:69: -> ^( CUSTOM_TYPE type_name ( ref_key )? ( percent_rowtype_key )? ( percent_type_key )? )
					{
						// PLSQLCommons.g:356:72: ^( CUSTOM_TYPE type_name ( ref_key )? ( percent_rowtype_key )? ( percent_type_key )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CUSTOM_TYPE, "CUSTOM_TYPE"), root_1);
						adaptor.addChild(root_1, stream_type_name.nextTree());
						// PLSQLCommons.g:356:96: ( ref_key )?
						if ( stream_ref_key.hasNext() ) {
							adaptor.addChild(root_1, stream_ref_key.nextTree());
						}
						stream_ref_key.reset();

						// PLSQLCommons.g:356:105: ( percent_rowtype_key )?
						if ( stream_percent_rowtype_key.hasNext() ) {
							adaptor.addChild(root_1, stream_percent_rowtype_key.nextTree());
						}
						stream_percent_rowtype_key.reset();

						// PLSQLCommons.g:356:126: ( percent_type_key )?
						if ( stream_percent_type_key.hasNext() ) {
							adaptor.addChild(root_1, stream_percent_type_key.nextTree());
						}
						stream_percent_type_key.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "type_spec"


	public static class datatype_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "datatype"
	// PLSQLCommons.g:359:1: datatype : ( native_datatype_element ( precision_part )? ( with_key ( local_key )? time_key zone_key )? -> ^( NATIVE_DATATYPE native_datatype_element ( precision_part )? ( time_key )? ( local_key )? ) | interval_key ( year_key | day_key ) ( LEFT_PAREN expression_wrapper RIGHT_PAREN )? to_key ( month_key | second_key ) ( LEFT_PAREN expression_wrapper RIGHT_PAREN )? -> ^( INTERVAL_DATATYPE[$interval_key.start] ( year_key )? ( day_key )? ( month_key )? ( second_key )? ( expression_wrapper )* ) );
	public final PLSQLParser_PLSQLCommons.datatype_return datatype() throws RecognitionException {
		PLSQLParser_PLSQLCommons.datatype_return retval = new PLSQLParser_PLSQLCommons.datatype_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LEFT_PAREN171=null;
		Token RIGHT_PAREN173=null;
		Token LEFT_PAREN177=null;
		Token RIGHT_PAREN179=null;
		ParserRuleReturnScope native_datatype_element162 =null;
		ParserRuleReturnScope precision_part163 =null;
		ParserRuleReturnScope with_key164 =null;
		ParserRuleReturnScope local_key165 =null;
		ParserRuleReturnScope time_key166 =null;
		ParserRuleReturnScope zone_key167 =null;
		ParserRuleReturnScope interval_key168 =null;
		ParserRuleReturnScope year_key169 =null;
		ParserRuleReturnScope day_key170 =null;
		ParserRuleReturnScope expression_wrapper172 =null;
		ParserRuleReturnScope to_key174 =null;
		ParserRuleReturnScope month_key175 =null;
		ParserRuleReturnScope second_key176 =null;
		ParserRuleReturnScope expression_wrapper178 =null;

		Object LEFT_PAREN171_tree=null;
		Object RIGHT_PAREN173_tree=null;
		Object LEFT_PAREN177_tree=null;
		Object RIGHT_PAREN179_tree=null;
		RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
		RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
		RewriteRuleSubtreeStream stream_to_key=new RewriteRuleSubtreeStream(adaptor,"rule to_key");
		RewriteRuleSubtreeStream stream_year_key=new RewriteRuleSubtreeStream(adaptor,"rule year_key");
		RewriteRuleSubtreeStream stream_local_key=new RewriteRuleSubtreeStream(adaptor,"rule local_key");
		RewriteRuleSubtreeStream stream_month_key=new RewriteRuleSubtreeStream(adaptor,"rule month_key");
		RewriteRuleSubtreeStream stream_precision_part=new RewriteRuleSubtreeStream(adaptor,"rule precision_part");
		RewriteRuleSubtreeStream stream_native_datatype_element=new RewriteRuleSubtreeStream(adaptor,"rule native_datatype_element");
		RewriteRuleSubtreeStream stream_with_key=new RewriteRuleSubtreeStream(adaptor,"rule with_key");
		RewriteRuleSubtreeStream stream_interval_key=new RewriteRuleSubtreeStream(adaptor,"rule interval_key");
		RewriteRuleSubtreeStream stream_day_key=new RewriteRuleSubtreeStream(adaptor,"rule day_key");
		RewriteRuleSubtreeStream stream_zone_key=new RewriteRuleSubtreeStream(adaptor,"rule zone_key");
		RewriteRuleSubtreeStream stream_expression_wrapper=new RewriteRuleSubtreeStream(adaptor,"rule expression_wrapper");
		RewriteRuleSubtreeStream stream_second_key=new RewriteRuleSubtreeStream(adaptor,"rule second_key");
		RewriteRuleSubtreeStream stream_time_key=new RewriteRuleSubtreeStream(adaptor,"rule time_key");

		try {
			// PLSQLCommons.g:360:5: ( native_datatype_element ( precision_part )? ( with_key ( local_key )? time_key zone_key )? -> ^( NATIVE_DATATYPE native_datatype_element ( precision_part )? ( time_key )? ( local_key )? ) | interval_key ( year_key | day_key ) ( LEFT_PAREN expression_wrapper RIGHT_PAREN )? to_key ( month_key | second_key ) ( LEFT_PAREN expression_wrapper RIGHT_PAREN )? -> ^( INTERVAL_DATATYPE[$interval_key.start] ( year_key )? ( day_key )? ( month_key )? ( second_key )? ( expression_wrapper )* ) )
			int alt67=2;
			int LA67_0 = input.LA(1);
			if ( (LA67_0==REGULAR_ID) ) {
				int LA67_1 = input.LA(2);
				if ( (((input.LT(1).getText().equalsIgnoreCase("positiven"))||(input.LT(1).getText().equalsIgnoreCase("hour"))||(input.LT(1).getText().equalsIgnoreCase("timestamp_ltz_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("mlslabel"))||(input.LT(1).getText().equalsIgnoreCase("bfile"))||(input.LT(1).getText().equalsIgnoreCase("timezone_minute"))||(input.LT(1).getText().equalsIgnoreCase("urowid"))||(input.LT(1).getText().equalsIgnoreCase("pls_integer"))||(input.LT(1).getText().equalsIgnoreCase("double"))||(input.LT(1).getText().equalsIgnoreCase("varchar"))||(input.LT(1).getText().equalsIgnoreCase("timestamp_tz_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("dec"))||(input.LT(1).getText().equalsIgnoreCase("smallint"))||(input.LT(1).getText().equalsIgnoreCase("signtype"))||(input.LT(1).getText().equalsIgnoreCase("character"))||(input.LT(1).getText().equalsIgnoreCase("nvarchar2"))||(input.LT(1).getText().equalsIgnoreCase("decimal"))||(input.LT(1).getText().equalsIgnoreCase("blob"))||(input.LT(1).getText().equalsIgnoreCase("timezone_hour"))||(input.LT(1).getText().equalsIgnoreCase("binary_float"))||(input.LT(1).getText().equalsIgnoreCase("yminterval_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("integer"))||(input.LT(1).getText().equalsIgnoreCase("nchar"))||(input.LT(1).getText().equalsIgnoreCase("day"))||(input.LT(1).getText().equalsIgnoreCase("varchar2"))||(input.LT(1).getText().equalsIgnoreCase("natural"))||(input.LT(1).getText().equalsIgnoreCase("binary_double"))||(input.LT(1).getText().equalsIgnoreCase("string"))||(input.LT(1).getText().equalsIgnoreCase("real"))||(input.LT(1).getText().equalsIgnoreCase("nclob"))||(input.LT(1).getText().equalsIgnoreCase("timestamp"))||(input.LT(1).getText().equalsIgnoreCase("timestamp_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("raw"))||(input.LT(1).getText().equalsIgnoreCase("year"))||(input.LT(1).getText().equalsIgnoreCase("rowid"))||(input.LT(1).getText().equalsIgnoreCase("timezone_region"))||(input.LT(1).getText().equalsIgnoreCase("timezone_abbr"))||(input.LT(1).getText().equalsIgnoreCase("simple_integer"))||(input.LT(1).getText().equalsIgnoreCase("int"))||(input.LT(1).getText().equalsIgnoreCase("month"))||(input.LT(1).getText().equalsIgnoreCase("minute"))||(input.LT(1).getText().equalsIgnoreCase("naturaln"))||(input.LT(1).getText().equalsIgnoreCase("dsinterval_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("char"))||(input.LT(1).getText().equalsIgnoreCase("second"))||(input.LT(1).getText().equalsIgnoreCase("number"))||(input.LT(1).getText().equalsIgnoreCase("float"))||(input.LT(1).getText().equalsIgnoreCase("positive"))||(input.LT(1).getText().equalsIgnoreCase("numeric"))||(input.LT(1).getText().equalsIgnoreCase("boolean"))||(input.LT(1).getText().equalsIgnoreCase("clob"))||(input.LT(1).getText().equalsIgnoreCase("binary_integer"))||(input.LT(1).getText().equalsIgnoreCase("long")))) ) {
					alt67=1;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("interval"))) ) {
					alt67=2;
				}

				else {
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 67, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

			}
			else if ( (LA67_0==SQL92_RESERVED_DATE) ) {
				alt67=1;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 67, 0, input);
				throw nvae;
			}

			switch (alt67) {
				case 1 :
					// PLSQLCommons.g:360:10: native_datatype_element ( precision_part )? ( with_key ( local_key )? time_key zone_key )?
					{
					pushFollow(FOLLOW_native_datatype_element_in_datatype2955);
					native_datatype_element162=native_datatype_element();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_native_datatype_element.add(native_datatype_element162.getTree());
					// PLSQLCommons.g:361:9: ( precision_part )?
					int alt60=2;
					int LA60_0 = input.LA(1);
					if ( (LA60_0==LEFT_PAREN) ) {
						alt60=1;
					}
					switch (alt60) {
						case 1 :
							// PLSQLCommons.g:361:9: precision_part
							{
							pushFollow(FOLLOW_precision_part_in_datatype2965);
							precision_part163=precision_part();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_precision_part.add(precision_part163.getTree());
							}
							break;

					}

					// PLSQLCommons.g:362:9: ( with_key ( local_key )? time_key zone_key )?
					int alt62=2;
					int LA62_0 = input.LA(1);
					if ( (LA62_0==SQL92_RESERVED_WITH) ) {
						alt62=1;
					}
					switch (alt62) {
						case 1 :
							// PLSQLCommons.g:362:10: with_key ( local_key )? time_key zone_key
							{
							pushFollow(FOLLOW_with_key_in_datatype2977);
							with_key164=gPLSQLParser.with_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_with_key.add(with_key164.getTree());
							// PLSQLCommons.g:362:19: ( local_key )?
							int alt61=2;
							int LA61_0 = input.LA(1);
							if ( (LA61_0==REGULAR_ID) ) {
								int LA61_1 = input.LA(2);
								if ( (LA61_1==REGULAR_ID) ) {
									int LA61_2 = input.LA(3);
									if ( (LA61_2==REGULAR_ID) ) {
										int LA61_4 = input.LA(4);
										if ( ((input.LT(1).getText().equalsIgnoreCase("local"))) ) {
											alt61=1;
										}
									}
								}
							}
							switch (alt61) {
								case 1 :
									// PLSQLCommons.g:362:19: local_key
									{
									pushFollow(FOLLOW_local_key_in_datatype2979);
									local_key165=gPLSQLParser.local_key();
									state._fsp--;
									if (state.failed) return retval;
									if ( state.backtracking==0 ) stream_local_key.add(local_key165.getTree());
									}
									break;

							}

							pushFollow(FOLLOW_time_key_in_datatype2982);
							time_key166=gPLSQLParser.time_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_time_key.add(time_key166.getTree());
							pushFollow(FOLLOW_zone_key_in_datatype2984);
							zone_key167=gPLSQLParser.zone_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_zone_key.add(zone_key167.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: time_key, precision_part, native_datatype_element, local_key
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 363:9: -> ^( NATIVE_DATATYPE native_datatype_element ( precision_part )? ( time_key )? ( local_key )? )
					{
						// PLSQLCommons.g:363:12: ^( NATIVE_DATATYPE native_datatype_element ( precision_part )? ( time_key )? ( local_key )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(NATIVE_DATATYPE, "NATIVE_DATATYPE"), root_1);
						adaptor.addChild(root_1, stream_native_datatype_element.nextTree());
						// PLSQLCommons.g:363:54: ( precision_part )?
						if ( stream_precision_part.hasNext() ) {
							adaptor.addChild(root_1, stream_precision_part.nextTree());
						}
						stream_precision_part.reset();

						// PLSQLCommons.g:363:70: ( time_key )?
						if ( stream_time_key.hasNext() ) {
							adaptor.addChild(root_1, stream_time_key.nextTree());
						}
						stream_time_key.reset();

						// PLSQLCommons.g:363:80: ( local_key )?
						if ( stream_local_key.hasNext() ) {
							adaptor.addChild(root_1, stream_local_key.nextTree());
						}
						stream_local_key.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// PLSQLCommons.g:364:10: interval_key ( year_key | day_key ) ( LEFT_PAREN expression_wrapper RIGHT_PAREN )? to_key ( month_key | second_key ) ( LEFT_PAREN expression_wrapper RIGHT_PAREN )?
					{
					pushFollow(FOLLOW_interval_key_in_datatype3022);
					interval_key168=gPLSQLParser.interval_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_interval_key.add(interval_key168.getTree());
					// PLSQLCommons.g:364:23: ( year_key | day_key )
					int alt63=2;
					int LA63_0 = input.LA(1);
					if ( (LA63_0==REGULAR_ID) && (((input.LT(1).getText().equalsIgnoreCase("year"))||(input.LT(1).getText().equalsIgnoreCase("day"))))) {
						int LA63_1 = input.LA(2);
						if ( ((input.LT(1).getText().equalsIgnoreCase("year"))) ) {
							alt63=1;
						}
						else if ( ((input.LT(1).getText().equalsIgnoreCase("day"))) ) {
							alt63=2;
						}

						else {
							if (state.backtracking>0) {state.failed=true; return retval;}
							int nvaeMark = input.mark();
							try {
								input.consume();
								NoViableAltException nvae =
									new NoViableAltException("", 63, 1, input);
								throw nvae;
							} finally {
								input.rewind(nvaeMark);
							}
						}

					}

					switch (alt63) {
						case 1 :
							// PLSQLCommons.g:364:24: year_key
							{
							pushFollow(FOLLOW_year_key_in_datatype3025);
							year_key169=gPLSQLParser.year_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_year_key.add(year_key169.getTree());
							}
							break;
						case 2 :
							// PLSQLCommons.g:364:33: day_key
							{
							pushFollow(FOLLOW_day_key_in_datatype3027);
							day_key170=gPLSQLParser.day_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_day_key.add(day_key170.getTree());
							}
							break;

					}

					// PLSQLCommons.g:365:17: ( LEFT_PAREN expression_wrapper RIGHT_PAREN )?
					int alt64=2;
					int LA64_0 = input.LA(1);
					if ( (LA64_0==LEFT_PAREN) ) {
						alt64=1;
					}
					switch (alt64) {
						case 1 :
							// PLSQLCommons.g:365:18: LEFT_PAREN expression_wrapper RIGHT_PAREN
							{
							LEFT_PAREN171=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_datatype3047); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN171);

							pushFollow(FOLLOW_expression_wrapper_in_datatype3049);
							expression_wrapper172=gPLSQLParser.expression_wrapper();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression_wrapper.add(expression_wrapper172.getTree());
							RIGHT_PAREN173=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_datatype3051); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN173);

							}
							break;

					}

					pushFollow(FOLLOW_to_key_in_datatype3068);
					to_key174=gPLSQLParser.to_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_to_key.add(to_key174.getTree());
					// PLSQLCommons.g:366:20: ( month_key | second_key )
					int alt65=2;
					int LA65_0 = input.LA(1);
					if ( (LA65_0==REGULAR_ID) ) {
						int LA65_1 = input.LA(2);
						if ( ((input.LT(1).getText().equalsIgnoreCase("month"))) ) {
							alt65=1;
						}
						else if ( ((input.LT(1).getText().equalsIgnoreCase("second"))) ) {
							alt65=2;
						}

						else {
							if (state.backtracking>0) {state.failed=true; return retval;}
							int nvaeMark = input.mark();
							try {
								input.consume();
								NoViableAltException nvae =
									new NoViableAltException("", 65, 1, input);
								throw nvae;
							} finally {
								input.rewind(nvaeMark);
							}
						}

					}

					else {
						if (state.backtracking>0) {state.failed=true; return retval;}
						NoViableAltException nvae =
							new NoViableAltException("", 65, 0, input);
						throw nvae;
					}

					switch (alt65) {
						case 1 :
							// PLSQLCommons.g:366:21: month_key
							{
							pushFollow(FOLLOW_month_key_in_datatype3071);
							month_key175=gPLSQLParser.month_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_month_key.add(month_key175.getTree());
							}
							break;
						case 2 :
							// PLSQLCommons.g:366:31: second_key
							{
							pushFollow(FOLLOW_second_key_in_datatype3073);
							second_key176=gPLSQLParser.second_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_second_key.add(second_key176.getTree());
							}
							break;

					}

					// PLSQLCommons.g:367:17: ( LEFT_PAREN expression_wrapper RIGHT_PAREN )?
					int alt66=2;
					int LA66_0 = input.LA(1);
					if ( (LA66_0==LEFT_PAREN) ) {
						alt66=1;
					}
					switch (alt66) {
						case 1 :
							// PLSQLCommons.g:367:18: LEFT_PAREN expression_wrapper RIGHT_PAREN
							{
							LEFT_PAREN177=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_datatype3094); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN177);

							pushFollow(FOLLOW_expression_wrapper_in_datatype3096);
							expression_wrapper178=gPLSQLParser.expression_wrapper();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression_wrapper.add(expression_wrapper178.getTree());
							RIGHT_PAREN179=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_datatype3098); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN179);

							}
							break;

					}

					// AST REWRITE
					// elements: year_key, expression_wrapper, month_key, second_key, day_key
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 368:9: -> ^( INTERVAL_DATATYPE[$interval_key.start] ( year_key )? ( day_key )? ( month_key )? ( second_key )? ( expression_wrapper )* )
					{
						// PLSQLCommons.g:368:12: ^( INTERVAL_DATATYPE[$interval_key.start] ( year_key )? ( day_key )? ( month_key )? ( second_key )? ( expression_wrapper )* )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(INTERVAL_DATATYPE, (interval_key168!=null?(interval_key168.start):null)), root_1);
						// PLSQLCommons.g:368:53: ( year_key )?
						if ( stream_year_key.hasNext() ) {
							adaptor.addChild(root_1, stream_year_key.nextTree());
						}
						stream_year_key.reset();

						// PLSQLCommons.g:368:63: ( day_key )?
						if ( stream_day_key.hasNext() ) {
							adaptor.addChild(root_1, stream_day_key.nextTree());
						}
						stream_day_key.reset();

						// PLSQLCommons.g:368:72: ( month_key )?
						if ( stream_month_key.hasNext() ) {
							adaptor.addChild(root_1, stream_month_key.nextTree());
						}
						stream_month_key.reset();

						// PLSQLCommons.g:368:83: ( second_key )?
						if ( stream_second_key.hasNext() ) {
							adaptor.addChild(root_1, stream_second_key.nextTree());
						}
						stream_second_key.reset();

						// PLSQLCommons.g:368:95: ( expression_wrapper )*
						while ( stream_expression_wrapper.hasNext() ) {
							adaptor.addChild(root_1, stream_expression_wrapper.nextTree());
						}
						stream_expression_wrapper.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "datatype"


	public static class precision_part_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "precision_part"
	// PLSQLCommons.g:371:1: precision_part : LEFT_PAREN numeric ( COMMA numeric )? ( char_key | byte_key )? RIGHT_PAREN -> ^( PRECISION ( numeric )+ ( char_key )? ( byte_key )? ) ;
	public final PLSQLParser_PLSQLCommons.precision_part_return precision_part() throws RecognitionException {
		PLSQLParser_PLSQLCommons.precision_part_return retval = new PLSQLParser_PLSQLCommons.precision_part_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LEFT_PAREN180=null;
		Token COMMA182=null;
		Token RIGHT_PAREN186=null;
		ParserRuleReturnScope numeric181 =null;
		ParserRuleReturnScope numeric183 =null;
		ParserRuleReturnScope char_key184 =null;
		ParserRuleReturnScope byte_key185 =null;

		Object LEFT_PAREN180_tree=null;
		Object COMMA182_tree=null;
		Object RIGHT_PAREN186_tree=null;
		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
		RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
		RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
		RewriteRuleSubtreeStream stream_char_key=new RewriteRuleSubtreeStream(adaptor,"rule char_key");
		RewriteRuleSubtreeStream stream_numeric=new RewriteRuleSubtreeStream(adaptor,"rule numeric");
		RewriteRuleSubtreeStream stream_byte_key=new RewriteRuleSubtreeStream(adaptor,"rule byte_key");

		try {
			// PLSQLCommons.g:372:5: ( LEFT_PAREN numeric ( COMMA numeric )? ( char_key | byte_key )? RIGHT_PAREN -> ^( PRECISION ( numeric )+ ( char_key )? ( byte_key )? ) )
			// PLSQLCommons.g:372:10: LEFT_PAREN numeric ( COMMA numeric )? ( char_key | byte_key )? RIGHT_PAREN
			{
			LEFT_PAREN180=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_precision_part3150); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN180);

			pushFollow(FOLLOW_numeric_in_precision_part3152);
			numeric181=numeric();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_numeric.add(numeric181.getTree());
			// PLSQLCommons.g:372:29: ( COMMA numeric )?
			int alt68=2;
			int LA68_0 = input.LA(1);
			if ( (LA68_0==COMMA) ) {
				alt68=1;
			}
			switch (alt68) {
				case 1 :
					// PLSQLCommons.g:372:30: COMMA numeric
					{
					COMMA182=(Token)match(input,COMMA,FOLLOW_COMMA_in_precision_part3155); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COMMA.add(COMMA182);

					pushFollow(FOLLOW_numeric_in_precision_part3157);
					numeric183=numeric();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_numeric.add(numeric183.getTree());
					}
					break;

			}

			// PLSQLCommons.g:372:46: ( char_key | byte_key )?
			int alt69=3;
			int LA69_0 = input.LA(1);
			if ( (LA69_0==REGULAR_ID) && (((input.LT(1).getText().equalsIgnoreCase("char"))||(input.LT(1).getText().equalsIgnoreCase("byte"))))) {
				int LA69_1 = input.LA(2);
				if ( ((input.LT(1).getText().equalsIgnoreCase("char"))) ) {
					alt69=1;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("byte"))) ) {
					alt69=2;
				}
			}
			switch (alt69) {
				case 1 :
					// PLSQLCommons.g:372:47: char_key
					{
					pushFollow(FOLLOW_char_key_in_precision_part3162);
					char_key184=gPLSQLParser.char_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_char_key.add(char_key184.getTree());
					}
					break;
				case 2 :
					// PLSQLCommons.g:372:58: byte_key
					{
					pushFollow(FOLLOW_byte_key_in_precision_part3166);
					byte_key185=gPLSQLParser.byte_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_byte_key.add(byte_key185.getTree());
					}
					break;

			}

			RIGHT_PAREN186=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_precision_part3170); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN186);

			// AST REWRITE
			// elements: byte_key, numeric, char_key
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 373:9: -> ^( PRECISION ( numeric )+ ( char_key )? ( byte_key )? )
			{
				// PLSQLCommons.g:373:12: ^( PRECISION ( numeric )+ ( char_key )? ( byte_key )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRECISION, "PRECISION"), root_1);
				if ( !(stream_numeric.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_numeric.hasNext() ) {
					adaptor.addChild(root_1, stream_numeric.nextTree());
				}
				stream_numeric.reset();

				// PLSQLCommons.g:373:33: ( char_key )?
				if ( stream_char_key.hasNext() ) {
					adaptor.addChild(root_1, stream_char_key.nextTree());
				}
				stream_char_key.reset();

				// PLSQLCommons.g:373:43: ( byte_key )?
				if ( stream_byte_key.hasNext() ) {
					adaptor.addChild(root_1, stream_byte_key.nextTree());
				}
				stream_byte_key.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "precision_part"


	public static class native_datatype_element_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "native_datatype_element"
	// PLSQLCommons.g:376:1: native_datatype_element : ( binary_integer_key | pls_integer_key | natural_key | binary_float_key | binary_double_key | naturaln_key | positive_key | positiven_key | signtype_key | simple_integer_key | nvarchar2_key | dec_key | integer_key | int_key | numeric_key | smallint_key | number_key | decimal_key | double_key ( precision_key )? | float_key | real_key | nchar_key | long_key ( raw_key )? | char_key | character_key | varchar2_key | varchar_key | string_key | raw_key | boolean_key | date_key | rowid_key | urowid_key | year_key | month_key | day_key | hour_key | minute_key | second_key | timezone_hour_key | timezone_minute_key | timezone_region_key | timezone_abbr_key | timestamp_key | timestamp_unconstrained_key | timestamp_tz_unconstrained_key | timestamp_ltz_unconstrained_key | yminterval_unconstrained_key | dsinterval_unconstrained_key | bfile_key | blob_key | clob_key | nclob_key | mlslabel_key );
	public final PLSQLParser_PLSQLCommons.native_datatype_element_return native_datatype_element() throws RecognitionException {
		PLSQLParser_PLSQLCommons.native_datatype_element_return retval = new PLSQLParser_PLSQLCommons.native_datatype_element_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope binary_integer_key187 =null;
		ParserRuleReturnScope pls_integer_key188 =null;
		ParserRuleReturnScope natural_key189 =null;
		ParserRuleReturnScope binary_float_key190 =null;
		ParserRuleReturnScope binary_double_key191 =null;
		ParserRuleReturnScope naturaln_key192 =null;
		ParserRuleReturnScope positive_key193 =null;
		ParserRuleReturnScope positiven_key194 =null;
		ParserRuleReturnScope signtype_key195 =null;
		ParserRuleReturnScope simple_integer_key196 =null;
		ParserRuleReturnScope nvarchar2_key197 =null;
		ParserRuleReturnScope dec_key198 =null;
		ParserRuleReturnScope integer_key199 =null;
		ParserRuleReturnScope int_key200 =null;
		ParserRuleReturnScope numeric_key201 =null;
		ParserRuleReturnScope smallint_key202 =null;
		ParserRuleReturnScope number_key203 =null;
		ParserRuleReturnScope decimal_key204 =null;
		ParserRuleReturnScope double_key205 =null;
		ParserRuleReturnScope precision_key206 =null;
		ParserRuleReturnScope float_key207 =null;
		ParserRuleReturnScope real_key208 =null;
		ParserRuleReturnScope nchar_key209 =null;
		ParserRuleReturnScope long_key210 =null;
		ParserRuleReturnScope raw_key211 =null;
		ParserRuleReturnScope char_key212 =null;
		ParserRuleReturnScope character_key213 =null;
		ParserRuleReturnScope varchar2_key214 =null;
		ParserRuleReturnScope varchar_key215 =null;
		ParserRuleReturnScope string_key216 =null;
		ParserRuleReturnScope raw_key217 =null;
		ParserRuleReturnScope boolean_key218 =null;
		ParserRuleReturnScope date_key219 =null;
		ParserRuleReturnScope rowid_key220 =null;
		ParserRuleReturnScope urowid_key221 =null;
		ParserRuleReturnScope year_key222 =null;
		ParserRuleReturnScope month_key223 =null;
		ParserRuleReturnScope day_key224 =null;
		ParserRuleReturnScope hour_key225 =null;
		ParserRuleReturnScope minute_key226 =null;
		ParserRuleReturnScope second_key227 =null;
		ParserRuleReturnScope timezone_hour_key228 =null;
		ParserRuleReturnScope timezone_minute_key229 =null;
		ParserRuleReturnScope timezone_region_key230 =null;
		ParserRuleReturnScope timezone_abbr_key231 =null;
		ParserRuleReturnScope timestamp_key232 =null;
		ParserRuleReturnScope timestamp_unconstrained_key233 =null;
		ParserRuleReturnScope timestamp_tz_unconstrained_key234 =null;
		ParserRuleReturnScope timestamp_ltz_unconstrained_key235 =null;
		ParserRuleReturnScope yminterval_unconstrained_key236 =null;
		ParserRuleReturnScope dsinterval_unconstrained_key237 =null;
		ParserRuleReturnScope bfile_key238 =null;
		ParserRuleReturnScope blob_key239 =null;
		ParserRuleReturnScope clob_key240 =null;
		ParserRuleReturnScope nclob_key241 =null;
		ParserRuleReturnScope mlslabel_key242 =null;


		try {
			// PLSQLCommons.g:377:5: ( binary_integer_key | pls_integer_key | natural_key | binary_float_key | binary_double_key | naturaln_key | positive_key | positiven_key | signtype_key | simple_integer_key | nvarchar2_key | dec_key | integer_key | int_key | numeric_key | smallint_key | number_key | decimal_key | double_key ( precision_key )? | float_key | real_key | nchar_key | long_key ( raw_key )? | char_key | character_key | varchar2_key | varchar_key | string_key | raw_key | boolean_key | date_key | rowid_key | urowid_key | year_key | month_key | day_key | hour_key | minute_key | second_key | timezone_hour_key | timezone_minute_key | timezone_region_key | timezone_abbr_key | timestamp_key | timestamp_unconstrained_key | timestamp_tz_unconstrained_key | timestamp_ltz_unconstrained_key | yminterval_unconstrained_key | dsinterval_unconstrained_key | bfile_key | blob_key | clob_key | nclob_key | mlslabel_key )
			int alt72=54;
			int LA72_0 = input.LA(1);
			if ( (LA72_0==REGULAR_ID) ) {
				int LA72_1 = input.LA(2);
				if ( ((input.LT(1).getText().equalsIgnoreCase("binary_integer"))) ) {
					alt72=1;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("pls_integer"))) ) {
					alt72=2;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("natural"))) ) {
					alt72=3;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("binary_float"))) ) {
					alt72=4;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("binary_double"))) ) {
					alt72=5;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("naturaln"))) ) {
					alt72=6;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("positive"))) ) {
					alt72=7;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("positiven"))) ) {
					alt72=8;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("signtype"))) ) {
					alt72=9;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("simple_integer"))) ) {
					alt72=10;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("nvarchar2"))) ) {
					alt72=11;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("dec"))) ) {
					alt72=12;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("integer"))) ) {
					alt72=13;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("int"))) ) {
					alt72=14;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("numeric"))) ) {
					alt72=15;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("smallint"))) ) {
					alt72=16;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("number"))) ) {
					alt72=17;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("decimal"))) ) {
					alt72=18;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("double"))) ) {
					alt72=19;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("float"))) ) {
					alt72=20;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("real"))) ) {
					alt72=21;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("nchar"))) ) {
					alt72=22;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("long"))) ) {
					alt72=23;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("char"))) ) {
					alt72=24;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("character"))) ) {
					alt72=25;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("varchar2"))) ) {
					alt72=26;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("varchar"))) ) {
					alt72=27;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("string"))) ) {
					alt72=28;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("raw"))) ) {
					alt72=29;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("boolean"))) ) {
					alt72=30;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("rowid"))) ) {
					alt72=32;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("urowid"))) ) {
					alt72=33;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("year"))) ) {
					alt72=34;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("month"))) ) {
					alt72=35;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("day"))) ) {
					alt72=36;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("hour"))) ) {
					alt72=37;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("minute"))) ) {
					alt72=38;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("second"))) ) {
					alt72=39;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("timezone_hour"))) ) {
					alt72=40;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("timezone_minute"))) ) {
					alt72=41;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("timezone_region"))) ) {
					alt72=42;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("timezone_abbr"))) ) {
					alt72=43;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("timestamp"))) ) {
					alt72=44;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("timestamp_unconstrained"))) ) {
					alt72=45;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("timestamp_tz_unconstrained"))) ) {
					alt72=46;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("timestamp_ltz_unconstrained"))) ) {
					alt72=47;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("yminterval_unconstrained"))) ) {
					alt72=48;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("dsinterval_unconstrained"))) ) {
					alt72=49;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("bfile"))) ) {
					alt72=50;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("blob"))) ) {
					alt72=51;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("clob"))) ) {
					alt72=52;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("nclob"))) ) {
					alt72=53;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("mlslabel"))) ) {
					alt72=54;
				}

				else {
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 72, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

			}
			else if ( (LA72_0==SQL92_RESERVED_DATE) ) {
				alt72=31;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 72, 0, input);
				throw nvae;
			}

			switch (alt72) {
				case 1 :
					// PLSQLCommons.g:377:10: binary_integer_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_binary_integer_key_in_native_datatype_element3213);
					binary_integer_key187=gPLSQLParser.binary_integer_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, binary_integer_key187.getTree());

					}
					break;
				case 2 :
					// PLSQLCommons.g:378:10: pls_integer_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_pls_integer_key_in_native_datatype_element3224);
					pls_integer_key188=gPLSQLParser.pls_integer_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, pls_integer_key188.getTree());

					}
					break;
				case 3 :
					// PLSQLCommons.g:379:10: natural_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_natural_key_in_native_datatype_element3235);
					natural_key189=gPLSQLParser.natural_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, natural_key189.getTree());

					}
					break;
				case 4 :
					// PLSQLCommons.g:380:10: binary_float_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_binary_float_key_in_native_datatype_element3246);
					binary_float_key190=gPLSQLParser.binary_float_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, binary_float_key190.getTree());

					}
					break;
				case 5 :
					// PLSQLCommons.g:381:10: binary_double_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_binary_double_key_in_native_datatype_element3257);
					binary_double_key191=gPLSQLParser.binary_double_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, binary_double_key191.getTree());

					}
					break;
				case 6 :
					// PLSQLCommons.g:382:10: naturaln_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_naturaln_key_in_native_datatype_element3268);
					naturaln_key192=gPLSQLParser.naturaln_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, naturaln_key192.getTree());

					}
					break;
				case 7 :
					// PLSQLCommons.g:383:10: positive_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_positive_key_in_native_datatype_element3279);
					positive_key193=gPLSQLParser.positive_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, positive_key193.getTree());

					}
					break;
				case 8 :
					// PLSQLCommons.g:384:10: positiven_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_positiven_key_in_native_datatype_element3290);
					positiven_key194=gPLSQLParser.positiven_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, positiven_key194.getTree());

					}
					break;
				case 9 :
					// PLSQLCommons.g:385:10: signtype_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_signtype_key_in_native_datatype_element3301);
					signtype_key195=gPLSQLParser.signtype_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, signtype_key195.getTree());

					}
					break;
				case 10 :
					// PLSQLCommons.g:386:10: simple_integer_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_simple_integer_key_in_native_datatype_element3312);
					simple_integer_key196=gPLSQLParser.simple_integer_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, simple_integer_key196.getTree());

					}
					break;
				case 11 :
					// PLSQLCommons.g:387:10: nvarchar2_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_nvarchar2_key_in_native_datatype_element3323);
					nvarchar2_key197=gPLSQLParser.nvarchar2_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, nvarchar2_key197.getTree());

					}
					break;
				case 12 :
					// PLSQLCommons.g:388:10: dec_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_dec_key_in_native_datatype_element3334);
					dec_key198=gPLSQLParser.dec_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, dec_key198.getTree());

					}
					break;
				case 13 :
					// PLSQLCommons.g:389:10: integer_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_integer_key_in_native_datatype_element3345);
					integer_key199=gPLSQLParser.integer_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, integer_key199.getTree());

					}
					break;
				case 14 :
					// PLSQLCommons.g:390:10: int_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_int_key_in_native_datatype_element3356);
					int_key200=gPLSQLParser.int_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, int_key200.getTree());

					}
					break;
				case 15 :
					// PLSQLCommons.g:391:10: numeric_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_numeric_key_in_native_datatype_element3367);
					numeric_key201=gPLSQLParser.numeric_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, numeric_key201.getTree());

					}
					break;
				case 16 :
					// PLSQLCommons.g:392:10: smallint_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_smallint_key_in_native_datatype_element3378);
					smallint_key202=gPLSQLParser.smallint_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, smallint_key202.getTree());

					}
					break;
				case 17 :
					// PLSQLCommons.g:393:10: number_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_number_key_in_native_datatype_element3389);
					number_key203=gPLSQLParser.number_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, number_key203.getTree());

					}
					break;
				case 18 :
					// PLSQLCommons.g:394:10: decimal_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_decimal_key_in_native_datatype_element3400);
					decimal_key204=gPLSQLParser.decimal_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, decimal_key204.getTree());

					}
					break;
				case 19 :
					// PLSQLCommons.g:395:10: double_key ( precision_key )?
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_double_key_in_native_datatype_element3412);
					double_key205=gPLSQLParser.double_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, double_key205.getTree());

					// PLSQLCommons.g:395:21: ( precision_key )?
					int alt70=2;
					int LA70_0 = input.LA(1);
					if ( (LA70_0==REGULAR_ID) ) {
						int LA70_1 = input.LA(2);
						if ( ((input.LT(1).getText().equalsIgnoreCase("precision"))) ) {
							alt70=1;
						}
					}
					switch (alt70) {
						case 1 :
							// PLSQLCommons.g:395:21: precision_key
							{
							pushFollow(FOLLOW_precision_key_in_native_datatype_element3414);
							precision_key206=gPLSQLParser.precision_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, precision_key206.getTree());

							}
							break;

					}

					}
					break;
				case 20 :
					// PLSQLCommons.g:396:10: float_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_float_key_in_native_datatype_element3426);
					float_key207=gPLSQLParser.float_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, float_key207.getTree());

					}
					break;
				case 21 :
					// PLSQLCommons.g:397:10: real_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_real_key_in_native_datatype_element3437);
					real_key208=gPLSQLParser.real_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, real_key208.getTree());

					}
					break;
				case 22 :
					// PLSQLCommons.g:398:10: nchar_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_nchar_key_in_native_datatype_element3448);
					nchar_key209=gPLSQLParser.nchar_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, nchar_key209.getTree());

					}
					break;
				case 23 :
					// PLSQLCommons.g:399:10: long_key ( raw_key )?
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_long_key_in_native_datatype_element3459);
					long_key210=gPLSQLParser.long_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, long_key210.getTree());

					// PLSQLCommons.g:399:19: ( raw_key )?
					int alt71=2;
					int LA71_0 = input.LA(1);
					if ( (LA71_0==REGULAR_ID) ) {
						int LA71_1 = input.LA(2);
						if ( ((input.LT(1).getText().equalsIgnoreCase("raw"))) ) {
							alt71=1;
						}
					}
					switch (alt71) {
						case 1 :
							// PLSQLCommons.g:399:19: raw_key
							{
							pushFollow(FOLLOW_raw_key_in_native_datatype_element3461);
							raw_key211=gPLSQLParser.raw_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, raw_key211.getTree());

							}
							break;

					}

					}
					break;
				case 24 :
					// PLSQLCommons.g:400:10: char_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_char_key_in_native_datatype_element3473);
					char_key212=gPLSQLParser.char_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, char_key212.getTree());

					}
					break;
				case 25 :
					// PLSQLCommons.g:401:10: character_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_character_key_in_native_datatype_element3486);
					character_key213=gPLSQLParser.character_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, character_key213.getTree());

					}
					break;
				case 26 :
					// PLSQLCommons.g:402:10: varchar2_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_varchar2_key_in_native_datatype_element3498);
					varchar2_key214=gPLSQLParser.varchar2_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, varchar2_key214.getTree());

					}
					break;
				case 27 :
					// PLSQLCommons.g:403:10: varchar_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_varchar_key_in_native_datatype_element3509);
					varchar_key215=gPLSQLParser.varchar_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, varchar_key215.getTree());

					}
					break;
				case 28 :
					// PLSQLCommons.g:404:10: string_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_string_key_in_native_datatype_element3520);
					string_key216=gPLSQLParser.string_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, string_key216.getTree());

					}
					break;
				case 29 :
					// PLSQLCommons.g:405:10: raw_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_raw_key_in_native_datatype_element3531);
					raw_key217=gPLSQLParser.raw_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, raw_key217.getTree());

					}
					break;
				case 30 :
					// PLSQLCommons.g:406:10: boolean_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_boolean_key_in_native_datatype_element3542);
					boolean_key218=gPLSQLParser.boolean_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, boolean_key218.getTree());

					}
					break;
				case 31 :
					// PLSQLCommons.g:407:10: date_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_date_key_in_native_datatype_element3553);
					date_key219=gPLSQLParser.date_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, date_key219.getTree());

					}
					break;
				case 32 :
					// PLSQLCommons.g:408:10: rowid_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_rowid_key_in_native_datatype_element3564);
					rowid_key220=gPLSQLParser.rowid_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, rowid_key220.getTree());

					}
					break;
				case 33 :
					// PLSQLCommons.g:409:10: urowid_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_urowid_key_in_native_datatype_element3575);
					urowid_key221=gPLSQLParser.urowid_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, urowid_key221.getTree());

					}
					break;
				case 34 :
					// PLSQLCommons.g:410:10: year_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_year_key_in_native_datatype_element3586);
					year_key222=gPLSQLParser.year_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, year_key222.getTree());

					}
					break;
				case 35 :
					// PLSQLCommons.g:411:10: month_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_month_key_in_native_datatype_element3597);
					month_key223=gPLSQLParser.month_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, month_key223.getTree());

					}
					break;
				case 36 :
					// PLSQLCommons.g:412:10: day_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_day_key_in_native_datatype_element3608);
					day_key224=gPLSQLParser.day_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, day_key224.getTree());

					}
					break;
				case 37 :
					// PLSQLCommons.g:413:10: hour_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_hour_key_in_native_datatype_element3619);
					hour_key225=gPLSQLParser.hour_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, hour_key225.getTree());

					}
					break;
				case 38 :
					// PLSQLCommons.g:414:10: minute_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_minute_key_in_native_datatype_element3630);
					minute_key226=gPLSQLParser.minute_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, minute_key226.getTree());

					}
					break;
				case 39 :
					// PLSQLCommons.g:415:10: second_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_second_key_in_native_datatype_element3641);
					second_key227=gPLSQLParser.second_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, second_key227.getTree());

					}
					break;
				case 40 :
					// PLSQLCommons.g:416:10: timezone_hour_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_timezone_hour_key_in_native_datatype_element3652);
					timezone_hour_key228=gPLSQLParser.timezone_hour_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, timezone_hour_key228.getTree());

					}
					break;
				case 41 :
					// PLSQLCommons.g:417:10: timezone_minute_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_timezone_minute_key_in_native_datatype_element3663);
					timezone_minute_key229=gPLSQLParser.timezone_minute_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, timezone_minute_key229.getTree());

					}
					break;
				case 42 :
					// PLSQLCommons.g:418:10: timezone_region_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_timezone_region_key_in_native_datatype_element3674);
					timezone_region_key230=gPLSQLParser.timezone_region_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, timezone_region_key230.getTree());

					}
					break;
				case 43 :
					// PLSQLCommons.g:419:10: timezone_abbr_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_timezone_abbr_key_in_native_datatype_element3685);
					timezone_abbr_key231=gPLSQLParser.timezone_abbr_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, timezone_abbr_key231.getTree());

					}
					break;
				case 44 :
					// PLSQLCommons.g:420:10: timestamp_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_timestamp_key_in_native_datatype_element3696);
					timestamp_key232=gPLSQLParser.timestamp_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, timestamp_key232.getTree());

					}
					break;
				case 45 :
					// PLSQLCommons.g:421:10: timestamp_unconstrained_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_timestamp_unconstrained_key_in_native_datatype_element3707);
					timestamp_unconstrained_key233=gPLSQLParser.timestamp_unconstrained_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, timestamp_unconstrained_key233.getTree());

					}
					break;
				case 46 :
					// PLSQLCommons.g:422:10: timestamp_tz_unconstrained_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_timestamp_tz_unconstrained_key_in_native_datatype_element3718);
					timestamp_tz_unconstrained_key234=gPLSQLParser.timestamp_tz_unconstrained_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, timestamp_tz_unconstrained_key234.getTree());

					}
					break;
				case 47 :
					// PLSQLCommons.g:423:10: timestamp_ltz_unconstrained_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_timestamp_ltz_unconstrained_key_in_native_datatype_element3729);
					timestamp_ltz_unconstrained_key235=gPLSQLParser.timestamp_ltz_unconstrained_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, timestamp_ltz_unconstrained_key235.getTree());

					}
					break;
				case 48 :
					// PLSQLCommons.g:424:10: yminterval_unconstrained_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_yminterval_unconstrained_key_in_native_datatype_element3740);
					yminterval_unconstrained_key236=gPLSQLParser.yminterval_unconstrained_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, yminterval_unconstrained_key236.getTree());

					}
					break;
				case 49 :
					// PLSQLCommons.g:425:10: dsinterval_unconstrained_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_dsinterval_unconstrained_key_in_native_datatype_element3751);
					dsinterval_unconstrained_key237=gPLSQLParser.dsinterval_unconstrained_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, dsinterval_unconstrained_key237.getTree());

					}
					break;
				case 50 :
					// PLSQLCommons.g:426:10: bfile_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_bfile_key_in_native_datatype_element3762);
					bfile_key238=gPLSQLParser.bfile_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, bfile_key238.getTree());

					}
					break;
				case 51 :
					// PLSQLCommons.g:427:10: blob_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_blob_key_in_native_datatype_element3773);
					blob_key239=gPLSQLParser.blob_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, blob_key239.getTree());

					}
					break;
				case 52 :
					// PLSQLCommons.g:428:10: clob_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_clob_key_in_native_datatype_element3784);
					clob_key240=gPLSQLParser.clob_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, clob_key240.getTree());

					}
					break;
				case 53 :
					// PLSQLCommons.g:429:10: nclob_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_nclob_key_in_native_datatype_element3795);
					nclob_key241=gPLSQLParser.nclob_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, nclob_key241.getTree());

					}
					break;
				case 54 :
					// PLSQLCommons.g:430:10: mlslabel_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_mlslabel_key_in_native_datatype_element3806);
					mlslabel_key242=gPLSQLParser.mlslabel_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, mlslabel_key242.getTree());

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "native_datatype_element"


	public static class bind_variable_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "bind_variable"
	// PLSQLCommons.g:433:1: bind_variable : (b1= BINDVAR | COLON u1= UNSIGNED_INTEGER ) ( ( indicator_key )? (b2= BINDVAR | COLON u2= UNSIGNED_INTEGER ) )? ( ( PERIOD general_element_part )=> PERIOD general_element_part )* -> ^( HOSTED_VARIABLE_NAME ( $b1)? ( $u1)? ( indicator_key )? ( $b2)? ( $u2)? ( general_element_part )* ) ;
	public final PLSQLParser_PLSQLCommons.bind_variable_return bind_variable() throws RecognitionException {
		PLSQLParser_PLSQLCommons.bind_variable_return retval = new PLSQLParser_PLSQLCommons.bind_variable_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token b1=null;
		Token u1=null;
		Token b2=null;
		Token u2=null;
		Token COLON243=null;
		Token COLON245=null;
		Token PERIOD246=null;
		ParserRuleReturnScope indicator_key244 =null;
		ParserRuleReturnScope general_element_part247 =null;

		Object b1_tree=null;
		Object u1_tree=null;
		Object b2_tree=null;
		Object u2_tree=null;
		Object COLON243_tree=null;
		Object COLON245_tree=null;
		Object PERIOD246_tree=null;
		RewriteRuleTokenStream stream_BINDVAR=new RewriteRuleTokenStream(adaptor,"token BINDVAR");
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
		RewriteRuleTokenStream stream_UNSIGNED_INTEGER=new RewriteRuleTokenStream(adaptor,"token UNSIGNED_INTEGER");
		RewriteRuleSubtreeStream stream_general_element_part=new RewriteRuleSubtreeStream(adaptor,"rule general_element_part");
		RewriteRuleSubtreeStream stream_indicator_key=new RewriteRuleSubtreeStream(adaptor,"rule indicator_key");

		try {
			// PLSQLCommons.g:434:5: ( (b1= BINDVAR | COLON u1= UNSIGNED_INTEGER ) ( ( indicator_key )? (b2= BINDVAR | COLON u2= UNSIGNED_INTEGER ) )? ( ( PERIOD general_element_part )=> PERIOD general_element_part )* -> ^( HOSTED_VARIABLE_NAME ( $b1)? ( $u1)? ( indicator_key )? ( $b2)? ( $u2)? ( general_element_part )* ) )
			// PLSQLCommons.g:434:10: (b1= BINDVAR | COLON u1= UNSIGNED_INTEGER ) ( ( indicator_key )? (b2= BINDVAR | COLON u2= UNSIGNED_INTEGER ) )? ( ( PERIOD general_element_part )=> PERIOD general_element_part )*
			{
			// PLSQLCommons.g:434:10: (b1= BINDVAR | COLON u1= UNSIGNED_INTEGER )
			int alt73=2;
			int LA73_0 = input.LA(1);
			if ( (LA73_0==BINDVAR) ) {
				alt73=1;
			}
			else if ( (LA73_0==COLON) ) {
				alt73=2;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 73, 0, input);
				throw nvae;
			}

			switch (alt73) {
				case 1 :
					// PLSQLCommons.g:434:12: b1= BINDVAR
					{
					b1=(Token)match(input,BINDVAR,FOLLOW_BINDVAR_in_bind_variable3830); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_BINDVAR.add(b1);

					}
					break;
				case 2 :
					// PLSQLCommons.g:434:25: COLON u1= UNSIGNED_INTEGER
					{
					COLON243=(Token)match(input,COLON,FOLLOW_COLON_in_bind_variable3834); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COLON.add(COLON243);

					u1=(Token)match(input,UNSIGNED_INTEGER,FOLLOW_UNSIGNED_INTEGER_in_bind_variable3838); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_UNSIGNED_INTEGER.add(u1);

					}
					break;

			}

			// PLSQLCommons.g:435:10: ( ( indicator_key )? (b2= BINDVAR | COLON u2= UNSIGNED_INTEGER ) )?
			int alt76=2;
			int LA76_0 = input.LA(1);
			if ( (LA76_0==REGULAR_ID) ) {
				int LA76_1 = input.LA(2);
				if ( (LA76_1==BINDVAR) ) {
					int LA76_4 = input.LA(3);
					if ( ((input.LT(1).getText().equalsIgnoreCase("indicator"))) ) {
						alt76=1;
					}
				}
				else if ( (LA76_1==COLON) ) {
					int LA76_5 = input.LA(3);
					if ( (LA76_5==UNSIGNED_INTEGER) ) {
						int LA76_11 = input.LA(4);
						if ( ((input.LT(1).getText().equalsIgnoreCase("indicator"))) ) {
							alt76=1;
						}
					}
				}
			}
			else if ( (LA76_0==BINDVAR||LA76_0==COLON) ) {
				alt76=1;
			}
			switch (alt76) {
				case 1 :
					// PLSQLCommons.g:435:12: ( indicator_key )? (b2= BINDVAR | COLON u2= UNSIGNED_INTEGER )
					{
					// PLSQLCommons.g:435:12: ( indicator_key )?
					int alt74=2;
					int LA74_0 = input.LA(1);
					if ( (LA74_0==REGULAR_ID) ) {
						alt74=1;
					}
					switch (alt74) {
						case 1 :
							// PLSQLCommons.g:435:12: indicator_key
							{
							pushFollow(FOLLOW_indicator_key_in_bind_variable3852);
							indicator_key244=gPLSQLParser.indicator_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indicator_key.add(indicator_key244.getTree());
							}
							break;

					}

					// PLSQLCommons.g:435:27: (b2= BINDVAR | COLON u2= UNSIGNED_INTEGER )
					int alt75=2;
					int LA75_0 = input.LA(1);
					if ( (LA75_0==BINDVAR) ) {
						alt75=1;
					}
					else if ( (LA75_0==COLON) ) {
						alt75=2;
					}

					else {
						if (state.backtracking>0) {state.failed=true; return retval;}
						NoViableAltException nvae =
							new NoViableAltException("", 75, 0, input);
						throw nvae;
					}

					switch (alt75) {
						case 1 :
							// PLSQLCommons.g:435:28: b2= BINDVAR
							{
							b2=(Token)match(input,BINDVAR,FOLLOW_BINDVAR_in_bind_variable3858); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_BINDVAR.add(b2);

							}
							break;
						case 2 :
							// PLSQLCommons.g:435:41: COLON u2= UNSIGNED_INTEGER
							{
							COLON245=(Token)match(input,COLON,FOLLOW_COLON_in_bind_variable3862); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_COLON.add(COLON245);

							u2=(Token)match(input,UNSIGNED_INTEGER,FOLLOW_UNSIGNED_INTEGER_in_bind_variable3866); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_UNSIGNED_INTEGER.add(u2);

							}
							break;

					}

					}
					break;

			}

			// PLSQLCommons.g:436:10: ( ( PERIOD general_element_part )=> PERIOD general_element_part )*
			loop77:
			while (true) {
				int alt77=2;
				int LA77_0 = input.LA(1);
				if ( (LA77_0==PERIOD) && (synpred19_PLSQLCommons())) {
					alt77=1;
				}

				switch (alt77) {
				case 1 :
					// PLSQLCommons.g:436:11: ( PERIOD general_element_part )=> PERIOD general_element_part
					{
					PERIOD246=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_bind_variable3888); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD246);

					pushFollow(FOLLOW_general_element_part_in_bind_variable3890);
					general_element_part247=general_element_part();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_general_element_part.add(general_element_part247.getTree());
					}
					break;

				default :
					break loop77;
				}
			}

			// AST REWRITE
			// elements: general_element_part, b1, u2, indicator_key, b2, u1
			// token labels: b2, u1, u2, b1
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleTokenStream stream_b2=new RewriteRuleTokenStream(adaptor,"token b2",b2);
			RewriteRuleTokenStream stream_u1=new RewriteRuleTokenStream(adaptor,"token u1",u1);
			RewriteRuleTokenStream stream_u2=new RewriteRuleTokenStream(adaptor,"token u2",u2);
			RewriteRuleTokenStream stream_b1=new RewriteRuleTokenStream(adaptor,"token b1",b1);
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 437:10: -> ^( HOSTED_VARIABLE_NAME ( $b1)? ( $u1)? ( indicator_key )? ( $b2)? ( $u2)? ( general_element_part )* )
			{
				// PLSQLCommons.g:437:12: ^( HOSTED_VARIABLE_NAME ( $b1)? ( $u1)? ( indicator_key )? ( $b2)? ( $u2)? ( general_element_part )* )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(HOSTED_VARIABLE_NAME, "HOSTED_VARIABLE_NAME"), root_1);
				// PLSQLCommons.g:437:36: ( $b1)?
				if ( stream_b1.hasNext() ) {
					adaptor.addChild(root_1, stream_b1.nextNode());
				}
				stream_b1.reset();

				// PLSQLCommons.g:437:41: ( $u1)?
				if ( stream_u1.hasNext() ) {
					adaptor.addChild(root_1, stream_u1.nextNode());
				}
				stream_u1.reset();

				// PLSQLCommons.g:437:45: ( indicator_key )?
				if ( stream_indicator_key.hasNext() ) {
					adaptor.addChild(root_1, stream_indicator_key.nextTree());
				}
				stream_indicator_key.reset();

				// PLSQLCommons.g:437:61: ( $b2)?
				if ( stream_b2.hasNext() ) {
					adaptor.addChild(root_1, stream_b2.nextNode());
				}
				stream_b2.reset();

				// PLSQLCommons.g:437:66: ( $u2)?
				if ( stream_u2.hasNext() ) {
					adaptor.addChild(root_1, stream_u2.nextNode());
				}
				stream_u2.reset();

				// PLSQLCommons.g:437:70: ( general_element_part )*
				while ( stream_general_element_part.hasNext() ) {
					adaptor.addChild(root_1, stream_general_element_part.nextTree());
				}
				stream_general_element_part.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "bind_variable"


	public static class general_element_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "general_element"
	// PLSQLCommons.g:440:1: general_element : general_element_part ( ( PERIOD general_element_part )=> PERIOD general_element_part )* -> {isCascated}? ^( CASCATED_ELEMENT ( general_element_part )+ ) -> general_element_part ;
	public final PLSQLParser_PLSQLCommons.general_element_return general_element() throws RecognitionException {
		PLSQLParser_PLSQLCommons.general_element_return retval = new PLSQLParser_PLSQLCommons.general_element_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PERIOD249=null;
		ParserRuleReturnScope general_element_part248 =null;
		ParserRuleReturnScope general_element_part250 =null;

		Object PERIOD249_tree=null;
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_general_element_part=new RewriteRuleSubtreeStream(adaptor,"rule general_element_part");

		 boolean isCascated = true; 
		try {
			// PLSQLCommons.g:442:5: ( general_element_part ( ( PERIOD general_element_part )=> PERIOD general_element_part )* -> {isCascated}? ^( CASCATED_ELEMENT ( general_element_part )+ ) -> general_element_part )
			// PLSQLCommons.g:442:10: general_element_part ( ( PERIOD general_element_part )=> PERIOD general_element_part )*
			{
			pushFollow(FOLLOW_general_element_part_in_general_element3956);
			general_element_part248=general_element_part();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_general_element_part.add(general_element_part248.getTree());
			// PLSQLCommons.g:442:31: ( ( PERIOD general_element_part )=> PERIOD general_element_part )*
			loop78:
			while (true) {
				int alt78=2;
				int LA78_0 = input.LA(1);
				if ( (LA78_0==PERIOD) && (synpred20_PLSQLCommons())) {
					alt78=1;
				}

				switch (alt78) {
				case 1 :
					// PLSQLCommons.g:442:32: ( PERIOD general_element_part )=> PERIOD general_element_part
					{
					PERIOD249=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_general_element3966); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD249);

					pushFollow(FOLLOW_general_element_part_in_general_element3968);
					general_element_part250=general_element_part();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_general_element_part.add(general_element_part250.getTree());
					if ( state.backtracking==0 ) {isCascated = true;}
					}
					break;

				default :
					break loop78;
				}
			}

			// AST REWRITE
			// elements: general_element_part, general_element_part
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 443:9: -> {isCascated}? ^( CASCATED_ELEMENT ( general_element_part )+ )
			if (isCascated) {
				// PLSQLCommons.g:443:25: ^( CASCATED_ELEMENT ( general_element_part )+ )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CASCATED_ELEMENT, "CASCATED_ELEMENT"), root_1);
				if ( !(stream_general_element_part.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_general_element_part.hasNext() ) {
					adaptor.addChild(root_1, stream_general_element_part.nextTree());
				}
				stream_general_element_part.reset();

				adaptor.addChild(root_0, root_1);
				}

			}

			else // 444:9: -> general_element_part
			{
				adaptor.addChild(root_0, stream_general_element_part.nextTree());
			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "general_element"


	public static class general_element_part_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "general_element_part"
	// PLSQLCommons.g:447:1: general_element_part : ( INTRODUCER char_set_name )? id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )* ( function_argument )? -> {isRoutineCall}? ^( ROUTINE_CALL ^( ROUTINE_NAME ( char_set_name )? ( id_expression )+ ) function_argument ) -> ^( ANY_ELEMENT ( char_set_name )? ( id_expression )+ ) ;
	public final PLSQLParser_PLSQLCommons.general_element_part_return general_element_part() throws RecognitionException {
		PLSQLParser_PLSQLCommons.general_element_part_return retval = new PLSQLParser_PLSQLCommons.general_element_part_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token INTRODUCER251=null;
		Token PERIOD254=null;
		ParserRuleReturnScope char_set_name252 =null;
		ParserRuleReturnScope id_expression253 =null;
		ParserRuleReturnScope id_expression255 =null;
		ParserRuleReturnScope function_argument256 =null;

		Object INTRODUCER251_tree=null;
		Object PERIOD254_tree=null;
		RewriteRuleTokenStream stream_INTRODUCER=new RewriteRuleTokenStream(adaptor,"token INTRODUCER");
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
		RewriteRuleSubtreeStream stream_char_set_name=new RewriteRuleSubtreeStream(adaptor,"rule char_set_name");
		RewriteRuleSubtreeStream stream_function_argument=new RewriteRuleSubtreeStream(adaptor,"rule function_argument");

		 boolean isRoutineCall = false; 
		try {
			// PLSQLCommons.g:449:5: ( ( INTRODUCER char_set_name )? id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )* ( function_argument )? -> {isRoutineCall}? ^( ROUTINE_CALL ^( ROUTINE_NAME ( char_set_name )? ( id_expression )+ ) function_argument ) -> ^( ANY_ELEMENT ( char_set_name )? ( id_expression )+ ) )
			// PLSQLCommons.g:449:10: ( INTRODUCER char_set_name )? id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )* ( function_argument )?
			{
			// PLSQLCommons.g:449:10: ( INTRODUCER char_set_name )?
			int alt79=2;
			int LA79_0 = input.LA(1);
			if ( (LA79_0==INTRODUCER) ) {
				alt79=1;
			}
			switch (alt79) {
				case 1 :
					// PLSQLCommons.g:449:11: INTRODUCER char_set_name
					{
					INTRODUCER251=(Token)match(input,INTRODUCER,FOLLOW_INTRODUCER_in_general_element_part4031); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_INTRODUCER.add(INTRODUCER251);

					pushFollow(FOLLOW_char_set_name_in_general_element_part4033);
					char_set_name252=char_set_name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_char_set_name.add(char_set_name252.getTree());
					}
					break;

			}

			pushFollow(FOLLOW_id_expression_in_general_element_part4037);
			id_expression253=id_expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id_expression.add(id_expression253.getTree());
			// PLSQLCommons.g:450:13: ( ( PERIOD id_expression )=> PERIOD id_expression )*
			loop80:
			while (true) {
				int alt80=2;
				int LA80_0 = input.LA(1);
				if ( (LA80_0==PERIOD) ) {
					int LA80_2 = input.LA(2);
					if ( (LA80_2==REGULAR_ID) ) {
						int LA80_3 = input.LA(3);
						if ( (synpred21_PLSQLCommons()) ) {
							alt80=1;
						}

					}
					else if ( (LA80_2==DELIMITED_ID) ) {
						int LA80_4 = input.LA(3);
						if ( (synpred21_PLSQLCommons()) ) {
							alt80=1;
						}

					}

				}

				switch (alt80) {
				case 1 :
					// PLSQLCommons.g:450:14: ( PERIOD id_expression )=> PERIOD id_expression
					{
					PERIOD254=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_general_element_part4059); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD254);

					pushFollow(FOLLOW_id_expression_in_general_element_part4061);
					id_expression255=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id_expression.add(id_expression255.getTree());
					}
					break;

				default :
					break loop80;
				}
			}

			// PLSQLCommons.g:450:62: ( function_argument )?
			int alt81=2;
			alt81 = dfa81.predict(input);
			switch (alt81) {
				case 1 :
					// PLSQLCommons.g:450:63: function_argument
					{
					pushFollow(FOLLOW_function_argument_in_general_element_part4066);
					function_argument256=function_argument();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_function_argument.add(function_argument256.getTree());
					if ( state.backtracking==0 ) {isRoutineCall = true;}
					}
					break;

			}

			// AST REWRITE
			// elements: id_expression, function_argument, char_set_name, id_expression, char_set_name
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 451:9: -> {isRoutineCall}? ^( ROUTINE_CALL ^( ROUTINE_NAME ( char_set_name )? ( id_expression )+ ) function_argument )
			if (isRoutineCall) {
				// PLSQLCommons.g:451:28: ^( ROUTINE_CALL ^( ROUTINE_NAME ( char_set_name )? ( id_expression )+ ) function_argument )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ROUTINE_CALL, "ROUTINE_CALL"), root_1);
				// PLSQLCommons.g:451:43: ^( ROUTINE_NAME ( char_set_name )? ( id_expression )+ )
				{
				Object root_2 = (Object)adaptor.nil();
				root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(ROUTINE_NAME, "ROUTINE_NAME"), root_2);
				// PLSQLCommons.g:451:58: ( char_set_name )?
				if ( stream_char_set_name.hasNext() ) {
					adaptor.addChild(root_2, stream_char_set_name.nextTree());
				}
				stream_char_set_name.reset();

				if ( !(stream_id_expression.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_id_expression.hasNext() ) {
					adaptor.addChild(root_2, stream_id_expression.nextTree());
				}
				stream_id_expression.reset();

				adaptor.addChild(root_1, root_2);
				}

				adaptor.addChild(root_1, stream_function_argument.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}

			else // 452:9: -> ^( ANY_ELEMENT ( char_set_name )? ( id_expression )+ )
			{
				// PLSQLCommons.g:452:12: ^( ANY_ELEMENT ( char_set_name )? ( id_expression )+ )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ANY_ELEMENT, "ANY_ELEMENT"), root_1);
				// PLSQLCommons.g:452:26: ( char_set_name )?
				if ( stream_char_set_name.hasNext() ) {
					adaptor.addChild(root_1, stream_char_set_name.nextTree());
				}
				stream_char_set_name.reset();

				if ( !(stream_id_expression.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_id_expression.hasNext() ) {
					adaptor.addChild(root_1, stream_id_expression.nextTree());
				}
				stream_id_expression.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "general_element_part"


	public static class table_element_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "table_element"
	// PLSQLCommons.g:455:1: table_element : ( INTRODUCER char_set_name )? id_expression ( PERIOD id_expression )* -> ^( ANY_ELEMENT ( char_set_name )? ( id_expression )+ ) ;
	public final PLSQLParser_PLSQLCommons.table_element_return table_element() throws RecognitionException {
		PLSQLParser_PLSQLCommons.table_element_return retval = new PLSQLParser_PLSQLCommons.table_element_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token INTRODUCER257=null;
		Token PERIOD260=null;
		ParserRuleReturnScope char_set_name258 =null;
		ParserRuleReturnScope id_expression259 =null;
		ParserRuleReturnScope id_expression261 =null;

		Object INTRODUCER257_tree=null;
		Object PERIOD260_tree=null;
		RewriteRuleTokenStream stream_INTRODUCER=new RewriteRuleTokenStream(adaptor,"token INTRODUCER");
		RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
		RewriteRuleSubtreeStream stream_char_set_name=new RewriteRuleSubtreeStream(adaptor,"rule char_set_name");

		try {
			// PLSQLCommons.g:456:5: ( ( INTRODUCER char_set_name )? id_expression ( PERIOD id_expression )* -> ^( ANY_ELEMENT ( char_set_name )? ( id_expression )+ ) )
			// PLSQLCommons.g:456:10: ( INTRODUCER char_set_name )? id_expression ( PERIOD id_expression )*
			{
			// PLSQLCommons.g:456:10: ( INTRODUCER char_set_name )?
			int alt82=2;
			int LA82_0 = input.LA(1);
			if ( (LA82_0==INTRODUCER) ) {
				alt82=1;
			}
			switch (alt82) {
				case 1 :
					// PLSQLCommons.g:456:11: INTRODUCER char_set_name
					{
					INTRODUCER257=(Token)match(input,INTRODUCER,FOLLOW_INTRODUCER_in_table_element4138); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_INTRODUCER.add(INTRODUCER257);

					pushFollow(FOLLOW_char_set_name_in_table_element4140);
					char_set_name258=char_set_name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_char_set_name.add(char_set_name258.getTree());
					}
					break;

			}

			pushFollow(FOLLOW_id_expression_in_table_element4144);
			id_expression259=id_expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id_expression.add(id_expression259.getTree());
			// PLSQLCommons.g:456:52: ( PERIOD id_expression )*
			loop83:
			while (true) {
				int alt83=2;
				int LA83_0 = input.LA(1);
				if ( (LA83_0==PERIOD) ) {
					alt83=1;
				}

				switch (alt83) {
				case 1 :
					// PLSQLCommons.g:456:53: PERIOD id_expression
					{
					PERIOD260=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_table_element4147); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD260);

					pushFollow(FOLLOW_id_expression_in_table_element4149);
					id_expression261=id_expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_id_expression.add(id_expression261.getTree());
					}
					break;

				default :
					break loop83;
				}
			}

			// AST REWRITE
			// elements: char_set_name, id_expression
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 457:10: -> ^( ANY_ELEMENT ( char_set_name )? ( id_expression )+ )
			{
				// PLSQLCommons.g:457:13: ^( ANY_ELEMENT ( char_set_name )? ( id_expression )+ )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ANY_ELEMENT, "ANY_ELEMENT"), root_1);
				// PLSQLCommons.g:457:27: ( char_set_name )?
				if ( stream_char_set_name.hasNext() ) {
					adaptor.addChild(root_1, stream_char_set_name.nextTree());
				}
				stream_char_set_name.reset();

				if ( !(stream_id_expression.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_id_expression.hasNext() ) {
					adaptor.addChild(root_1, stream_id_expression.nextTree());
				}
				stream_id_expression.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "table_element"


	public static class constant_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "constant"
	// PLSQLCommons.g:464:1: constant : ( timestamp_key ( quoted_string | bind_variable ) ( at_key time_key zone_key quoted_string )? | interval_key ( quoted_string | bind_variable | general_element_part ) ( day_key | hour_key | minute_key | second_key ) ( LEFT_PAREN ( UNSIGNED_INTEGER | bind_variable ) ( COMMA ( UNSIGNED_INTEGER | bind_variable ) )? RIGHT_PAREN )? ( to_key ( day_key | hour_key | minute_key | second_key ( LEFT_PAREN ( UNSIGNED_INTEGER | bind_variable ) RIGHT_PAREN )? ) )? | numeric | date_key quoted_string | quoted_string | null_key | true_key | false_key | dbtimezone_key | sessiontimezone_key | minvalue_key | maxvalue_key | default_key );
	public final PLSQLParser_PLSQLCommons.constant_return constant() throws RecognitionException {
		PLSQLParser_PLSQLCommons.constant_return retval = new PLSQLParser_PLSQLCommons.constant_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LEFT_PAREN277=null;
		Token UNSIGNED_INTEGER278=null;
		Token COMMA280=null;
		Token UNSIGNED_INTEGER281=null;
		Token RIGHT_PAREN283=null;
		Token LEFT_PAREN289=null;
		Token UNSIGNED_INTEGER290=null;
		Token RIGHT_PAREN292=null;
		ParserRuleReturnScope timestamp_key262 =null;
		ParserRuleReturnScope quoted_string263 =null;
		ParserRuleReturnScope bind_variable264 =null;
		ParserRuleReturnScope at_key265 =null;
		ParserRuleReturnScope time_key266 =null;
		ParserRuleReturnScope zone_key267 =null;
		ParserRuleReturnScope quoted_string268 =null;
		ParserRuleReturnScope interval_key269 =null;
		ParserRuleReturnScope quoted_string270 =null;
		ParserRuleReturnScope bind_variable271 =null;
		ParserRuleReturnScope general_element_part272 =null;
		ParserRuleReturnScope day_key273 =null;
		ParserRuleReturnScope hour_key274 =null;
		ParserRuleReturnScope minute_key275 =null;
		ParserRuleReturnScope second_key276 =null;
		ParserRuleReturnScope bind_variable279 =null;
		ParserRuleReturnScope bind_variable282 =null;
		ParserRuleReturnScope to_key284 =null;
		ParserRuleReturnScope day_key285 =null;
		ParserRuleReturnScope hour_key286 =null;
		ParserRuleReturnScope minute_key287 =null;
		ParserRuleReturnScope second_key288 =null;
		ParserRuleReturnScope bind_variable291 =null;
		ParserRuleReturnScope numeric293 =null;
		ParserRuleReturnScope date_key294 =null;
		ParserRuleReturnScope quoted_string295 =null;
		ParserRuleReturnScope quoted_string296 =null;
		ParserRuleReturnScope null_key297 =null;
		ParserRuleReturnScope true_key298 =null;
		ParserRuleReturnScope false_key299 =null;
		ParserRuleReturnScope dbtimezone_key300 =null;
		ParserRuleReturnScope sessiontimezone_key301 =null;
		ParserRuleReturnScope minvalue_key302 =null;
		ParserRuleReturnScope maxvalue_key303 =null;
		ParserRuleReturnScope default_key304 =null;

		Object LEFT_PAREN277_tree=null;
		Object UNSIGNED_INTEGER278_tree=null;
		Object COMMA280_tree=null;
		Object UNSIGNED_INTEGER281_tree=null;
		Object RIGHT_PAREN283_tree=null;
		Object LEFT_PAREN289_tree=null;
		Object UNSIGNED_INTEGER290_tree=null;
		Object RIGHT_PAREN292_tree=null;

		try {
			// PLSQLCommons.g:465:5: ( timestamp_key ( quoted_string | bind_variable ) ( at_key time_key zone_key quoted_string )? | interval_key ( quoted_string | bind_variable | general_element_part ) ( day_key | hour_key | minute_key | second_key ) ( LEFT_PAREN ( UNSIGNED_INTEGER | bind_variable ) ( COMMA ( UNSIGNED_INTEGER | bind_variable ) )? RIGHT_PAREN )? ( to_key ( day_key | hour_key | minute_key | second_key ( LEFT_PAREN ( UNSIGNED_INTEGER | bind_variable ) RIGHT_PAREN )? ) )? | numeric | date_key quoted_string | quoted_string | null_key | true_key | false_key | dbtimezone_key | sessiontimezone_key | minvalue_key | maxvalue_key | default_key )
			int alt96=13;
			switch ( input.LA(1) ) {
			case REGULAR_ID:
				{
				int LA96_1 = input.LA(2);
				if ( ((input.LT(1).getText().equalsIgnoreCase("timestamp"))) ) {
					alt96=1;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("interval"))) ) {
					alt96=2;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("dbtimezone"))) ) {
					alt96=9;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("sessiontimezone"))) ) {
					alt96=10;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("minvalue"))) ) {
					alt96=11;
				}
				else if ( ((input.LT(1).getText().equalsIgnoreCase("maxvalue"))) ) {
					alt96=12;
				}

				else {
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 96, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

				}
				break;
			case APPROXIMATE_NUM_LIT:
			case EXACT_NUM_LIT:
			case UNSIGNED_INTEGER:
				{
				alt96=3;
				}
				break;
			case SQL92_RESERVED_DATE:
				{
				alt96=4;
				}
				break;
			case CHAR_STRING:
			case CHAR_STRING_PERL:
			case NATIONAL_CHAR_STRING_LIT:
				{
				alt96=5;
				}
				break;
			case SQL92_RESERVED_NULL:
				{
				alt96=6;
				}
				break;
			case SQL92_RESERVED_TRUE:
				{
				alt96=7;
				}
				break;
			case SQL92_RESERVED_FALSE:
				{
				alt96=8;
				}
				break;
			case SQL92_RESERVED_DEFAULT:
				{
				alt96=13;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 96, 0, input);
				throw nvae;
			}
			switch (alt96) {
				case 1 :
					// PLSQLCommons.g:465:10: timestamp_key ( quoted_string | bind_variable ) ( at_key time_key zone_key quoted_string )?
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_timestamp_key_in_constant4196);
					timestamp_key262=gPLSQLParser.timestamp_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, timestamp_key262.getTree());

					// PLSQLCommons.g:465:24: ( quoted_string | bind_variable )
					int alt84=2;
					int LA84_0 = input.LA(1);
					if ( ((LA84_0 >= CHAR_STRING && LA84_0 <= CHAR_STRING_PERL)||LA84_0==NATIONAL_CHAR_STRING_LIT) ) {
						alt84=1;
					}
					else if ( (LA84_0==BINDVAR||LA84_0==COLON) ) {
						alt84=2;
					}

					else {
						if (state.backtracking>0) {state.failed=true; return retval;}
						NoViableAltException nvae =
							new NoViableAltException("", 84, 0, input);
						throw nvae;
					}

					switch (alt84) {
						case 1 :
							// PLSQLCommons.g:465:25: quoted_string
							{
							pushFollow(FOLLOW_quoted_string_in_constant4199);
							quoted_string263=quoted_string();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, quoted_string263.getTree());

							}
							break;
						case 2 :
							// PLSQLCommons.g:465:41: bind_variable
							{
							pushFollow(FOLLOW_bind_variable_in_constant4203);
							bind_variable264=bind_variable();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, bind_variable264.getTree());

							}
							break;

					}

					// PLSQLCommons.g:465:56: ( at_key time_key zone_key quoted_string )?
					int alt85=2;
					int LA85_0 = input.LA(1);
					if ( (LA85_0==REGULAR_ID) ) {
						int LA85_1 = input.LA(2);
						if ( (LA85_1==REGULAR_ID) ) {
							int LA85_3 = input.LA(3);
							if ( (LA85_3==REGULAR_ID) ) {
								int LA85_11 = input.LA(4);
								if ( ((LA85_11 >= CHAR_STRING && LA85_11 <= CHAR_STRING_PERL)||LA85_11==NATIONAL_CHAR_STRING_LIT) ) {
									int LA85_12 = input.LA(5);
									if ( ((input.LT(1).getText().equalsIgnoreCase("at"))) ) {
										alt85=1;
									}
								}
							}
						}
					}
					switch (alt85) {
						case 1 :
							// PLSQLCommons.g:465:57: at_key time_key zone_key quoted_string
							{
							pushFollow(FOLLOW_at_key_in_constant4207);
							at_key265=gPLSQLParser.at_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, at_key265.getTree());

							pushFollow(FOLLOW_time_key_in_constant4209);
							time_key266=gPLSQLParser.time_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, time_key266.getTree());

							pushFollow(FOLLOW_zone_key_in_constant4211);
							zone_key267=gPLSQLParser.zone_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, zone_key267.getTree());

							pushFollow(FOLLOW_quoted_string_in_constant4213);
							quoted_string268=quoted_string();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, quoted_string268.getTree());

							}
							break;

					}

					}
					break;
				case 2 :
					// PLSQLCommons.g:466:10: interval_key ( quoted_string | bind_variable | general_element_part ) ( day_key | hour_key | minute_key | second_key ) ( LEFT_PAREN ( UNSIGNED_INTEGER | bind_variable ) ( COMMA ( UNSIGNED_INTEGER | bind_variable ) )? RIGHT_PAREN )? ( to_key ( day_key | hour_key | minute_key | second_key ( LEFT_PAREN ( UNSIGNED_INTEGER | bind_variable ) RIGHT_PAREN )? ) )?
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_interval_key_in_constant4226);
					interval_key269=gPLSQLParser.interval_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, interval_key269.getTree());

					// PLSQLCommons.g:466:23: ( quoted_string | bind_variable | general_element_part )
					int alt86=3;
					switch ( input.LA(1) ) {
					case CHAR_STRING:
					case CHAR_STRING_PERL:
					case NATIONAL_CHAR_STRING_LIT:
						{
						alt86=1;
						}
						break;
					case BINDVAR:
					case COLON:
						{
						alt86=2;
						}
						break;
					case DELIMITED_ID:
					case INTRODUCER:
					case REGULAR_ID:
						{
						alt86=3;
						}
						break;
					default:
						if (state.backtracking>0) {state.failed=true; return retval;}
						NoViableAltException nvae =
							new NoViableAltException("", 86, 0, input);
						throw nvae;
					}
					switch (alt86) {
						case 1 :
							// PLSQLCommons.g:466:24: quoted_string
							{
							pushFollow(FOLLOW_quoted_string_in_constant4229);
							quoted_string270=quoted_string();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, quoted_string270.getTree());

							}
							break;
						case 2 :
							// PLSQLCommons.g:466:40: bind_variable
							{
							pushFollow(FOLLOW_bind_variable_in_constant4233);
							bind_variable271=bind_variable();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, bind_variable271.getTree());

							}
							break;
						case 3 :
							// PLSQLCommons.g:466:56: general_element_part
							{
							pushFollow(FOLLOW_general_element_part_in_constant4237);
							general_element_part272=general_element_part();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, general_element_part272.getTree());

							}
							break;

					}

					// PLSQLCommons.g:467:10: ( day_key | hour_key | minute_key | second_key )
					int alt87=4;
					int LA87_0 = input.LA(1);
					if ( (LA87_0==REGULAR_ID) ) {
						int LA87_1 = input.LA(2);
						if ( ((input.LT(1).getText().equalsIgnoreCase("day"))) ) {
							alt87=1;
						}
						else if ( ((input.LT(1).getText().equalsIgnoreCase("hour"))) ) {
							alt87=2;
						}
						else if ( ((input.LT(1).getText().equalsIgnoreCase("minute"))) ) {
							alt87=3;
						}
						else if ( ((input.LT(1).getText().equalsIgnoreCase("second"))) ) {
							alt87=4;
						}

						else {
							if (state.backtracking>0) {state.failed=true; return retval;}
							int nvaeMark = input.mark();
							try {
								input.consume();
								NoViableAltException nvae =
									new NoViableAltException("", 87, 1, input);
								throw nvae;
							} finally {
								input.rewind(nvaeMark);
							}
						}

					}

					else {
						if (state.backtracking>0) {state.failed=true; return retval;}
						NoViableAltException nvae =
							new NoViableAltException("", 87, 0, input);
						throw nvae;
					}

					switch (alt87) {
						case 1 :
							// PLSQLCommons.g:467:12: day_key
							{
							pushFollow(FOLLOW_day_key_in_constant4251);
							day_key273=gPLSQLParser.day_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, day_key273.getTree());

							}
							break;
						case 2 :
							// PLSQLCommons.g:467:22: hour_key
							{
							pushFollow(FOLLOW_hour_key_in_constant4255);
							hour_key274=gPLSQLParser.hour_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, hour_key274.getTree());

							}
							break;
						case 3 :
							// PLSQLCommons.g:467:33: minute_key
							{
							pushFollow(FOLLOW_minute_key_in_constant4259);
							minute_key275=gPLSQLParser.minute_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, minute_key275.getTree());

							}
							break;
						case 4 :
							// PLSQLCommons.g:467:46: second_key
							{
							pushFollow(FOLLOW_second_key_in_constant4263);
							second_key276=gPLSQLParser.second_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, second_key276.getTree());

							}
							break;

					}

					// PLSQLCommons.g:468:10: ( LEFT_PAREN ( UNSIGNED_INTEGER | bind_variable ) ( COMMA ( UNSIGNED_INTEGER | bind_variable ) )? RIGHT_PAREN )?
					int alt91=2;
					int LA91_0 = input.LA(1);
					if ( (LA91_0==LEFT_PAREN) ) {
						alt91=1;
					}
					switch (alt91) {
						case 1 :
							// PLSQLCommons.g:468:12: LEFT_PAREN ( UNSIGNED_INTEGER | bind_variable ) ( COMMA ( UNSIGNED_INTEGER | bind_variable ) )? RIGHT_PAREN
							{
							LEFT_PAREN277=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constant4277); if (state.failed) return retval;
							if ( state.backtracking==0 ) {
							LEFT_PAREN277_tree = (Object)adaptor.create(LEFT_PAREN277);
							adaptor.addChild(root_0, LEFT_PAREN277_tree);
							}

							// PLSQLCommons.g:468:23: ( UNSIGNED_INTEGER | bind_variable )
							int alt88=2;
							int LA88_0 = input.LA(1);
							if ( (LA88_0==UNSIGNED_INTEGER) ) {
								alt88=1;
							}
							else if ( (LA88_0==BINDVAR||LA88_0==COLON) ) {
								alt88=2;
							}

							else {
								if (state.backtracking>0) {state.failed=true; return retval;}
								NoViableAltException nvae =
									new NoViableAltException("", 88, 0, input);
								throw nvae;
							}

							switch (alt88) {
								case 1 :
									// PLSQLCommons.g:468:24: UNSIGNED_INTEGER
									{
									UNSIGNED_INTEGER278=(Token)match(input,UNSIGNED_INTEGER,FOLLOW_UNSIGNED_INTEGER_in_constant4280); if (state.failed) return retval;
									if ( state.backtracking==0 ) {
									UNSIGNED_INTEGER278_tree = (Object)adaptor.create(UNSIGNED_INTEGER278);
									adaptor.addChild(root_0, UNSIGNED_INTEGER278_tree);
									}

									}
									break;
								case 2 :
									// PLSQLCommons.g:468:43: bind_variable
									{
									pushFollow(FOLLOW_bind_variable_in_constant4284);
									bind_variable279=bind_variable();
									state._fsp--;
									if (state.failed) return retval;
									if ( state.backtracking==0 ) adaptor.addChild(root_0, bind_variable279.getTree());

									}
									break;

							}

							// PLSQLCommons.g:468:58: ( COMMA ( UNSIGNED_INTEGER | bind_variable ) )?
							int alt90=2;
							int LA90_0 = input.LA(1);
							if ( (LA90_0==COMMA) ) {
								alt90=1;
							}
							switch (alt90) {
								case 1 :
									// PLSQLCommons.g:468:59: COMMA ( UNSIGNED_INTEGER | bind_variable )
									{
									COMMA280=(Token)match(input,COMMA,FOLLOW_COMMA_in_constant4288); if (state.failed) return retval;
									if ( state.backtracking==0 ) {
									COMMA280_tree = (Object)adaptor.create(COMMA280);
									adaptor.addChild(root_0, COMMA280_tree);
									}

									// PLSQLCommons.g:468:65: ( UNSIGNED_INTEGER | bind_variable )
									int alt89=2;
									int LA89_0 = input.LA(1);
									if ( (LA89_0==UNSIGNED_INTEGER) ) {
										alt89=1;
									}
									else if ( (LA89_0==BINDVAR||LA89_0==COLON) ) {
										alt89=2;
									}

									else {
										if (state.backtracking>0) {state.failed=true; return retval;}
										NoViableAltException nvae =
											new NoViableAltException("", 89, 0, input);
										throw nvae;
									}

									switch (alt89) {
										case 1 :
											// PLSQLCommons.g:468:66: UNSIGNED_INTEGER
											{
											UNSIGNED_INTEGER281=(Token)match(input,UNSIGNED_INTEGER,FOLLOW_UNSIGNED_INTEGER_in_constant4291); if (state.failed) return retval;
											if ( state.backtracking==0 ) {
											UNSIGNED_INTEGER281_tree = (Object)adaptor.create(UNSIGNED_INTEGER281);
											adaptor.addChild(root_0, UNSIGNED_INTEGER281_tree);
											}

											}
											break;
										case 2 :
											// PLSQLCommons.g:468:85: bind_variable
											{
											pushFollow(FOLLOW_bind_variable_in_constant4295);
											bind_variable282=bind_variable();
											state._fsp--;
											if (state.failed) return retval;
											if ( state.backtracking==0 ) adaptor.addChild(root_0, bind_variable282.getTree());

											}
											break;

									}

									}
									break;

							}

							RIGHT_PAREN283=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constant4301); if (state.failed) return retval;
							if ( state.backtracking==0 ) {
							RIGHT_PAREN283_tree = (Object)adaptor.create(RIGHT_PAREN283);
							adaptor.addChild(root_0, RIGHT_PAREN283_tree);
							}

							}
							break;

					}

					// PLSQLCommons.g:469:10: ( to_key ( day_key | hour_key | minute_key | second_key ( LEFT_PAREN ( UNSIGNED_INTEGER | bind_variable ) RIGHT_PAREN )? ) )?
					int alt95=2;
					int LA95_0 = input.LA(1);
					if ( (LA95_0==SQL92_RESERVED_TO) ) {
						alt95=1;
					}
					switch (alt95) {
						case 1 :
							// PLSQLCommons.g:469:12: to_key ( day_key | hour_key | minute_key | second_key ( LEFT_PAREN ( UNSIGNED_INTEGER | bind_variable ) RIGHT_PAREN )? )
							{
							pushFollow(FOLLOW_to_key_in_constant4316);
							to_key284=gPLSQLParser.to_key();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, to_key284.getTree());

							// PLSQLCommons.g:470:14: ( day_key | hour_key | minute_key | second_key ( LEFT_PAREN ( UNSIGNED_INTEGER | bind_variable ) RIGHT_PAREN )? )
							int alt94=4;
							int LA94_0 = input.LA(1);
							if ( (LA94_0==REGULAR_ID) ) {
								int LA94_1 = input.LA(2);
								if ( ((input.LT(1).getText().equalsIgnoreCase("day"))) ) {
									alt94=1;
								}
								else if ( ((input.LT(1).getText().equalsIgnoreCase("hour"))) ) {
									alt94=2;
								}
								else if ( ((input.LT(1).getText().equalsIgnoreCase("minute"))) ) {
									alt94=3;
								}
								else if ( ((input.LT(1).getText().equalsIgnoreCase("second"))) ) {
									alt94=4;
								}

								else {
									if (state.backtracking>0) {state.failed=true; return retval;}
									int nvaeMark = input.mark();
									try {
										input.consume();
										NoViableAltException nvae =
											new NoViableAltException("", 94, 1, input);
										throw nvae;
									} finally {
										input.rewind(nvaeMark);
									}
								}

							}

							else {
								if (state.backtracking>0) {state.failed=true; return retval;}
								NoViableAltException nvae =
									new NoViableAltException("", 94, 0, input);
								throw nvae;
							}

							switch (alt94) {
								case 1 :
									// PLSQLCommons.g:470:16: day_key
									{
									pushFollow(FOLLOW_day_key_in_constant4333);
									day_key285=gPLSQLParser.day_key();
									state._fsp--;
									if (state.failed) return retval;
									if ( state.backtracking==0 ) adaptor.addChild(root_0, day_key285.getTree());

									}
									break;
								case 2 :
									// PLSQLCommons.g:470:26: hour_key
									{
									pushFollow(FOLLOW_hour_key_in_constant4337);
									hour_key286=gPLSQLParser.hour_key();
									state._fsp--;
									if (state.failed) return retval;
									if ( state.backtracking==0 ) adaptor.addChild(root_0, hour_key286.getTree());

									}
									break;
								case 3 :
									// PLSQLCommons.g:470:37: minute_key
									{
									pushFollow(FOLLOW_minute_key_in_constant4341);
									minute_key287=gPLSQLParser.minute_key();
									state._fsp--;
									if (state.failed) return retval;
									if ( state.backtracking==0 ) adaptor.addChild(root_0, minute_key287.getTree());

									}
									break;
								case 4 :
									// PLSQLCommons.g:470:50: second_key ( LEFT_PAREN ( UNSIGNED_INTEGER | bind_variable ) RIGHT_PAREN )?
									{
									pushFollow(FOLLOW_second_key_in_constant4345);
									second_key288=gPLSQLParser.second_key();
									state._fsp--;
									if (state.failed) return retval;
									if ( state.backtracking==0 ) adaptor.addChild(root_0, second_key288.getTree());

									// PLSQLCommons.g:470:61: ( LEFT_PAREN ( UNSIGNED_INTEGER | bind_variable ) RIGHT_PAREN )?
									int alt93=2;
									int LA93_0 = input.LA(1);
									if ( (LA93_0==LEFT_PAREN) ) {
										alt93=1;
									}
									switch (alt93) {
										case 1 :
											// PLSQLCommons.g:470:62: LEFT_PAREN ( UNSIGNED_INTEGER | bind_variable ) RIGHT_PAREN
											{
											LEFT_PAREN289=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constant4348); if (state.failed) return retval;
											if ( state.backtracking==0 ) {
											LEFT_PAREN289_tree = (Object)adaptor.create(LEFT_PAREN289);
											adaptor.addChild(root_0, LEFT_PAREN289_tree);
											}

											// PLSQLCommons.g:470:73: ( UNSIGNED_INTEGER | bind_variable )
											int alt92=2;
											int LA92_0 = input.LA(1);
											if ( (LA92_0==UNSIGNED_INTEGER) ) {
												alt92=1;
											}
											else if ( (LA92_0==BINDVAR||LA92_0==COLON) ) {
												alt92=2;
											}

											else {
												if (state.backtracking>0) {state.failed=true; return retval;}
												NoViableAltException nvae =
													new NoViableAltException("", 92, 0, input);
												throw nvae;
											}

											switch (alt92) {
												case 1 :
													// PLSQLCommons.g:470:74: UNSIGNED_INTEGER
													{
													UNSIGNED_INTEGER290=(Token)match(input,UNSIGNED_INTEGER,FOLLOW_UNSIGNED_INTEGER_in_constant4351); if (state.failed) return retval;
													if ( state.backtracking==0 ) {
													UNSIGNED_INTEGER290_tree = (Object)adaptor.create(UNSIGNED_INTEGER290);
													adaptor.addChild(root_0, UNSIGNED_INTEGER290_tree);
													}

													}
													break;
												case 2 :
													// PLSQLCommons.g:470:93: bind_variable
													{
													pushFollow(FOLLOW_bind_variable_in_constant4355);
													bind_variable291=bind_variable();
													state._fsp--;
													if (state.failed) return retval;
													if ( state.backtracking==0 ) adaptor.addChild(root_0, bind_variable291.getTree());

													}
													break;

											}

											RIGHT_PAREN292=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constant4358); if (state.failed) return retval;
											if ( state.backtracking==0 ) {
											RIGHT_PAREN292_tree = (Object)adaptor.create(RIGHT_PAREN292);
											adaptor.addChild(root_0, RIGHT_PAREN292_tree);
											}

											}
											break;

									}

									}
									break;

							}

							}
							break;

					}

					}
					break;
				case 3 :
					// PLSQLCommons.g:472:10: numeric
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_numeric_in_constant4385);
					numeric293=numeric();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, numeric293.getTree());

					}
					break;
				case 4 :
					// PLSQLCommons.g:473:10: date_key quoted_string
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_date_key_in_constant4396);
					date_key294=gPLSQLParser.date_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, date_key294.getTree());

					pushFollow(FOLLOW_quoted_string_in_constant4398);
					quoted_string295=quoted_string();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, quoted_string295.getTree());

					}
					break;
				case 5 :
					// PLSQLCommons.g:474:10: quoted_string
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_quoted_string_in_constant4409);
					quoted_string296=quoted_string();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, quoted_string296.getTree());

					}
					break;
				case 6 :
					// PLSQLCommons.g:475:10: null_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_null_key_in_constant4420);
					null_key297=gPLSQLParser.null_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, null_key297.getTree());

					}
					break;
				case 7 :
					// PLSQLCommons.g:476:10: true_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_true_key_in_constant4431);
					true_key298=gPLSQLParser.true_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, true_key298.getTree());

					}
					break;
				case 8 :
					// PLSQLCommons.g:477:10: false_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_false_key_in_constant4442);
					false_key299=gPLSQLParser.false_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, false_key299.getTree());

					}
					break;
				case 9 :
					// PLSQLCommons.g:478:10: dbtimezone_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_dbtimezone_key_in_constant4453);
					dbtimezone_key300=gPLSQLParser.dbtimezone_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, dbtimezone_key300.getTree());

					}
					break;
				case 10 :
					// PLSQLCommons.g:479:10: sessiontimezone_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_sessiontimezone_key_in_constant4465);
					sessiontimezone_key301=gPLSQLParser.sessiontimezone_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, sessiontimezone_key301.getTree());

					}
					break;
				case 11 :
					// PLSQLCommons.g:480:10: minvalue_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_minvalue_key_in_constant4476);
					minvalue_key302=gPLSQLParser.minvalue_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, minvalue_key302.getTree());

					}
					break;
				case 12 :
					// PLSQLCommons.g:481:10: maxvalue_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_maxvalue_key_in_constant4487);
					maxvalue_key303=gPLSQLParser.maxvalue_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, maxvalue_key303.getTree());

					}
					break;
				case 13 :
					// PLSQLCommons.g:482:10: default_key
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_default_key_in_constant4498);
					default_key304=gPLSQLParser.default_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, default_key304.getTree());

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "constant"


	public static class numeric_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "numeric"
	// PLSQLCommons.g:485:1: numeric : ( UNSIGNED_INTEGER | EXACT_NUM_LIT | APPROXIMATE_NUM_LIT );
	public final PLSQLParser_PLSQLCommons.numeric_return numeric() throws RecognitionException {
		PLSQLParser_PLSQLCommons.numeric_return retval = new PLSQLParser_PLSQLCommons.numeric_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set305=null;

		Object set305_tree=null;

		try {
			// PLSQLCommons.g:486:5: ( UNSIGNED_INTEGER | EXACT_NUM_LIT | APPROXIMATE_NUM_LIT )
			// PLSQLCommons.g:
			{
			root_0 = (Object)adaptor.nil();


			set305=input.LT(1);
			if ( input.LA(1)==APPROXIMATE_NUM_LIT||input.LA(1)==EXACT_NUM_LIT||input.LA(1)==UNSIGNED_INTEGER ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set305));
				state.errorRecovery=false;
				state.failed=false;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "numeric"


	public static class quoted_string_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "quoted_string"
	// PLSQLCommons.g:490:1: quoted_string : ( CHAR_STRING | CHAR_STRING_PERL | NATIONAL_CHAR_STRING_LIT );
	public final PLSQLParser_PLSQLCommons.quoted_string_return quoted_string() throws RecognitionException {
		PLSQLParser_PLSQLCommons.quoted_string_return retval = new PLSQLParser_PLSQLCommons.quoted_string_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set306=null;

		Object set306_tree=null;

		try {
			// PLSQLCommons.g:491:5: ( CHAR_STRING | CHAR_STRING_PERL | NATIONAL_CHAR_STRING_LIT )
			// PLSQLCommons.g:
			{
			root_0 = (Object)adaptor.nil();


			set306=input.LT(1);
			if ( (input.LA(1) >= CHAR_STRING && input.LA(1) <= CHAR_STRING_PERL)||input.LA(1)==NATIONAL_CHAR_STRING_LIT ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set306));
				state.errorRecovery=false;
				state.failed=false;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "quoted_string"


	public static class id_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "id"
	// PLSQLCommons.g:496:1: id : ( INTRODUCER char_set_name )? id_expression -> ( char_set_name )? id_expression ;
	public final PLSQLParser_PLSQLCommons.id_return id() throws RecognitionException {
		PLSQLParser_PLSQLCommons.id_return retval = new PLSQLParser_PLSQLCommons.id_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token INTRODUCER307=null;
		ParserRuleReturnScope char_set_name308 =null;
		ParserRuleReturnScope id_expression309 =null;

		Object INTRODUCER307_tree=null;
		RewriteRuleTokenStream stream_INTRODUCER=new RewriteRuleTokenStream(adaptor,"token INTRODUCER");
		RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
		RewriteRuleSubtreeStream stream_char_set_name=new RewriteRuleSubtreeStream(adaptor,"rule char_set_name");

		try {
			// PLSQLCommons.g:497:5: ( ( INTRODUCER char_set_name )? id_expression -> ( char_set_name )? id_expression )
			// PLSQLCommons.g:497:10: ( INTRODUCER char_set_name )? id_expression
			{
			// PLSQLCommons.g:497:10: ( INTRODUCER char_set_name )?
			int alt97=2;
			int LA97_0 = input.LA(1);
			if ( (LA97_0==INTRODUCER) ) {
				alt97=1;
			}
			switch (alt97) {
				case 1 :
					// PLSQLCommons.g:497:11: INTRODUCER char_set_name
					{
					INTRODUCER307=(Token)match(input,INTRODUCER,FOLLOW_INTRODUCER_in_id4598); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_INTRODUCER.add(INTRODUCER307);

					pushFollow(FOLLOW_char_set_name_in_id4600);
					char_set_name308=char_set_name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_char_set_name.add(char_set_name308.getTree());
					}
					break;

			}

			pushFollow(FOLLOW_id_expression_in_id4612);
			id_expression309=id_expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_id_expression.add(id_expression309.getTree());
			// AST REWRITE
			// elements: char_set_name, id_expression
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 499:9: -> ( char_set_name )? id_expression
			{
				// PLSQLCommons.g:499:12: ( char_set_name )?
				if ( stream_char_set_name.hasNext() ) {
					adaptor.addChild(root_0, stream_char_set_name.nextTree());
				}
				stream_char_set_name.reset();

				adaptor.addChild(root_0, stream_id_expression.nextTree());
			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "id"


	public static class id_expression_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "id_expression"
	// PLSQLCommons.g:502:1: id_expression : ( REGULAR_ID -> ID[$REGULAR_ID] | DELIMITED_ID -> ID[$DELIMITED_ID] );
	public final PLSQLParser_PLSQLCommons.id_expression_return id_expression() throws RecognitionException {
		PLSQLParser_PLSQLCommons.id_expression_return retval = new PLSQLParser_PLSQLCommons.id_expression_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token REGULAR_ID310=null;
		Token DELIMITED_ID311=null;

		Object REGULAR_ID310_tree=null;
		Object DELIMITED_ID311_tree=null;
		RewriteRuleTokenStream stream_REGULAR_ID=new RewriteRuleTokenStream(adaptor,"token REGULAR_ID");
		RewriteRuleTokenStream stream_DELIMITED_ID=new RewriteRuleTokenStream(adaptor,"token DELIMITED_ID");

		try {
			// PLSQLCommons.g:503:5: ( REGULAR_ID -> ID[$REGULAR_ID] | DELIMITED_ID -> ID[$DELIMITED_ID] )
			int alt98=2;
			int LA98_0 = input.LA(1);
			if ( (LA98_0==REGULAR_ID) ) {
				alt98=1;
			}
			else if ( (LA98_0==DELIMITED_ID) ) {
				alt98=2;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 98, 0, input);
				throw nvae;
			}

			switch (alt98) {
				case 1 :
					// PLSQLCommons.g:503:10: REGULAR_ID
					{
					REGULAR_ID310=(Token)match(input,REGULAR_ID,FOLLOW_REGULAR_ID_in_id_expression4647); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_REGULAR_ID.add(REGULAR_ID310);

					// AST REWRITE
					// elements: 
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 503:21: -> ID[$REGULAR_ID]
					{
						adaptor.addChild(root_0, (Object)adaptor.create(ID, REGULAR_ID310));
					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// PLSQLCommons.g:504:10: DELIMITED_ID
					{
					DELIMITED_ID311=(Token)match(input,DELIMITED_ID,FOLLOW_DELIMITED_ID_in_id_expression4666); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_DELIMITED_ID.add(DELIMITED_ID311);

					// AST REWRITE
					// elements: 
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 504:23: -> ID[$DELIMITED_ID]
					{
						adaptor.addChild(root_0, (Object)adaptor.create(ID, DELIMITED_ID311));
					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "id_expression"


	public static class not_equal_op_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "not_equal_op"
	// PLSQLCommons.g:507:1: not_equal_op : ( NOT_EQUAL_OP | LESS_THAN_OP GREATER_THAN_OP | EXCLAMATION_OPERATOR_PART EQUALS_OP | CARRET_OPERATOR_PART EQUALS_OP );
	public final PLSQLParser_PLSQLCommons.not_equal_op_return not_equal_op() throws RecognitionException {
		PLSQLParser_PLSQLCommons.not_equal_op_return retval = new PLSQLParser_PLSQLCommons.not_equal_op_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token NOT_EQUAL_OP312=null;
		Token LESS_THAN_OP313=null;
		Token GREATER_THAN_OP314=null;
		Token EXCLAMATION_OPERATOR_PART315=null;
		Token EQUALS_OP316=null;
		Token CARRET_OPERATOR_PART317=null;
		Token EQUALS_OP318=null;

		Object NOT_EQUAL_OP312_tree=null;
		Object LESS_THAN_OP313_tree=null;
		Object GREATER_THAN_OP314_tree=null;
		Object EXCLAMATION_OPERATOR_PART315_tree=null;
		Object EQUALS_OP316_tree=null;
		Object CARRET_OPERATOR_PART317_tree=null;
		Object EQUALS_OP318_tree=null;

		try {
			// PLSQLCommons.g:508:5: ( NOT_EQUAL_OP | LESS_THAN_OP GREATER_THAN_OP | EXCLAMATION_OPERATOR_PART EQUALS_OP | CARRET_OPERATOR_PART EQUALS_OP )
			int alt99=4;
			switch ( input.LA(1) ) {
			case NOT_EQUAL_OP:
				{
				alt99=1;
				}
				break;
			case LESS_THAN_OP:
				{
				alt99=2;
				}
				break;
			case EXCLAMATION_OPERATOR_PART:
				{
				alt99=3;
				}
				break;
			case CARRET_OPERATOR_PART:
				{
				alt99=4;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 99, 0, input);
				throw nvae;
			}
			switch (alt99) {
				case 1 :
					// PLSQLCommons.g:508:10: NOT_EQUAL_OP
					{
					root_0 = (Object)adaptor.nil();


					NOT_EQUAL_OP312=(Token)match(input,NOT_EQUAL_OP,FOLLOW_NOT_EQUAL_OP_in_not_equal_op4695); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					NOT_EQUAL_OP312_tree = (Object)adaptor.create(NOT_EQUAL_OP312);
					adaptor.addChild(root_0, NOT_EQUAL_OP312_tree);
					}

					}
					break;
				case 2 :
					// PLSQLCommons.g:509:10: LESS_THAN_OP GREATER_THAN_OP
					{
					root_0 = (Object)adaptor.nil();


					LESS_THAN_OP313=(Token)match(input,LESS_THAN_OP,FOLLOW_LESS_THAN_OP_in_not_equal_op4706); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					LESS_THAN_OP313_tree = (Object)adaptor.create(LESS_THAN_OP313);
					adaptor.addChild(root_0, LESS_THAN_OP313_tree);
					}

					GREATER_THAN_OP314=(Token)match(input,GREATER_THAN_OP,FOLLOW_GREATER_THAN_OP_in_not_equal_op4708); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					GREATER_THAN_OP314_tree = (Object)adaptor.create(GREATER_THAN_OP314);
					adaptor.addChild(root_0, GREATER_THAN_OP314_tree);
					}

					}
					break;
				case 3 :
					// PLSQLCommons.g:510:10: EXCLAMATION_OPERATOR_PART EQUALS_OP
					{
					root_0 = (Object)adaptor.nil();


					EXCLAMATION_OPERATOR_PART315=(Token)match(input,EXCLAMATION_OPERATOR_PART,FOLLOW_EXCLAMATION_OPERATOR_PART_in_not_equal_op4719); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					EXCLAMATION_OPERATOR_PART315_tree = (Object)adaptor.create(EXCLAMATION_OPERATOR_PART315);
					adaptor.addChild(root_0, EXCLAMATION_OPERATOR_PART315_tree);
					}

					EQUALS_OP316=(Token)match(input,EQUALS_OP,FOLLOW_EQUALS_OP_in_not_equal_op4721); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					EQUALS_OP316_tree = (Object)adaptor.create(EQUALS_OP316);
					adaptor.addChild(root_0, EQUALS_OP316_tree);
					}

					}
					break;
				case 4 :
					// PLSQLCommons.g:511:10: CARRET_OPERATOR_PART EQUALS_OP
					{
					root_0 = (Object)adaptor.nil();


					CARRET_OPERATOR_PART317=(Token)match(input,CARRET_OPERATOR_PART,FOLLOW_CARRET_OPERATOR_PART_in_not_equal_op4732); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					CARRET_OPERATOR_PART317_tree = (Object)adaptor.create(CARRET_OPERATOR_PART317);
					adaptor.addChild(root_0, CARRET_OPERATOR_PART317_tree);
					}

					EQUALS_OP318=(Token)match(input,EQUALS_OP,FOLLOW_EQUALS_OP_in_not_equal_op4734); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					EQUALS_OP318_tree = (Object)adaptor.create(EQUALS_OP318);
					adaptor.addChild(root_0, EQUALS_OP318_tree);
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "not_equal_op"


	public static class greater_than_or_equals_op_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "greater_than_or_equals_op"
	// PLSQLCommons.g:514:1: greater_than_or_equals_op : ( GREATER_THAN_OR_EQUALS_OP | GREATER_THAN_OP EQUALS_OP );
	public final PLSQLParser_PLSQLCommons.greater_than_or_equals_op_return greater_than_or_equals_op() throws RecognitionException {
		PLSQLParser_PLSQLCommons.greater_than_or_equals_op_return retval = new PLSQLParser_PLSQLCommons.greater_than_or_equals_op_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token GREATER_THAN_OR_EQUALS_OP319=null;
		Token GREATER_THAN_OP320=null;
		Token EQUALS_OP321=null;

		Object GREATER_THAN_OR_EQUALS_OP319_tree=null;
		Object GREATER_THAN_OP320_tree=null;
		Object EQUALS_OP321_tree=null;

		try {
			// PLSQLCommons.g:515:5: ( GREATER_THAN_OR_EQUALS_OP | GREATER_THAN_OP EQUALS_OP )
			int alt100=2;
			int LA100_0 = input.LA(1);
			if ( (LA100_0==GREATER_THAN_OR_EQUALS_OP) ) {
				alt100=1;
			}
			else if ( (LA100_0==GREATER_THAN_OP) ) {
				alt100=2;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 100, 0, input);
				throw nvae;
			}

			switch (alt100) {
				case 1 :
					// PLSQLCommons.g:515:10: GREATER_THAN_OR_EQUALS_OP
					{
					root_0 = (Object)adaptor.nil();


					GREATER_THAN_OR_EQUALS_OP319=(Token)match(input,GREATER_THAN_OR_EQUALS_OP,FOLLOW_GREATER_THAN_OR_EQUALS_OP_in_greater_than_or_equals_op4754); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					GREATER_THAN_OR_EQUALS_OP319_tree = (Object)adaptor.create(GREATER_THAN_OR_EQUALS_OP319);
					adaptor.addChild(root_0, GREATER_THAN_OR_EQUALS_OP319_tree);
					}

					}
					break;
				case 2 :
					// PLSQLCommons.g:516:10: GREATER_THAN_OP EQUALS_OP
					{
					root_0 = (Object)adaptor.nil();


					GREATER_THAN_OP320=(Token)match(input,GREATER_THAN_OP,FOLLOW_GREATER_THAN_OP_in_greater_than_or_equals_op4765); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					GREATER_THAN_OP320_tree = (Object)adaptor.create(GREATER_THAN_OP320);
					adaptor.addChild(root_0, GREATER_THAN_OP320_tree);
					}

					EQUALS_OP321=(Token)match(input,EQUALS_OP,FOLLOW_EQUALS_OP_in_greater_than_or_equals_op4767); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					EQUALS_OP321_tree = (Object)adaptor.create(EQUALS_OP321);
					adaptor.addChild(root_0, EQUALS_OP321_tree);
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "greater_than_or_equals_op"


	public static class less_than_or_equals_op_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "less_than_or_equals_op"
	// PLSQLCommons.g:519:1: less_than_or_equals_op : ( LESS_THAN_OR_EQUALS_OP | LESS_THAN_OP EQUALS_OP );
	public final PLSQLParser_PLSQLCommons.less_than_or_equals_op_return less_than_or_equals_op() throws RecognitionException {
		PLSQLParser_PLSQLCommons.less_than_or_equals_op_return retval = new PLSQLParser_PLSQLCommons.less_than_or_equals_op_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LESS_THAN_OR_EQUALS_OP322=null;
		Token LESS_THAN_OP323=null;
		Token EQUALS_OP324=null;

		Object LESS_THAN_OR_EQUALS_OP322_tree=null;
		Object LESS_THAN_OP323_tree=null;
		Object EQUALS_OP324_tree=null;

		try {
			// PLSQLCommons.g:520:5: ( LESS_THAN_OR_EQUALS_OP | LESS_THAN_OP EQUALS_OP )
			int alt101=2;
			int LA101_0 = input.LA(1);
			if ( (LA101_0==LESS_THAN_OR_EQUALS_OP) ) {
				alt101=1;
			}
			else if ( (LA101_0==LESS_THAN_OP) ) {
				alt101=2;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 101, 0, input);
				throw nvae;
			}

			switch (alt101) {
				case 1 :
					// PLSQLCommons.g:520:10: LESS_THAN_OR_EQUALS_OP
					{
					root_0 = (Object)adaptor.nil();


					LESS_THAN_OR_EQUALS_OP322=(Token)match(input,LESS_THAN_OR_EQUALS_OP,FOLLOW_LESS_THAN_OR_EQUALS_OP_in_less_than_or_equals_op4787); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					LESS_THAN_OR_EQUALS_OP322_tree = (Object)adaptor.create(LESS_THAN_OR_EQUALS_OP322);
					adaptor.addChild(root_0, LESS_THAN_OR_EQUALS_OP322_tree);
					}

					}
					break;
				case 2 :
					// PLSQLCommons.g:521:10: LESS_THAN_OP EQUALS_OP
					{
					root_0 = (Object)adaptor.nil();


					LESS_THAN_OP323=(Token)match(input,LESS_THAN_OP,FOLLOW_LESS_THAN_OP_in_less_than_or_equals_op4798); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					LESS_THAN_OP323_tree = (Object)adaptor.create(LESS_THAN_OP323);
					adaptor.addChild(root_0, LESS_THAN_OP323_tree);
					}

					EQUALS_OP324=(Token)match(input,EQUALS_OP,FOLLOW_EQUALS_OP_in_less_than_or_equals_op4800); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					EQUALS_OP324_tree = (Object)adaptor.create(EQUALS_OP324);
					adaptor.addChild(root_0, EQUALS_OP324_tree);
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "less_than_or_equals_op"


	public static class concatenation_op_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "concatenation_op"
	// PLSQLCommons.g:524:1: concatenation_op : ( CONCATENATION_OP | VERTICAL_BAR VERTICAL_BAR );
	public final PLSQLParser_PLSQLCommons.concatenation_op_return concatenation_op() throws RecognitionException {
		PLSQLParser_PLSQLCommons.concatenation_op_return retval = new PLSQLParser_PLSQLCommons.concatenation_op_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token CONCATENATION_OP325=null;
		Token VERTICAL_BAR326=null;
		Token VERTICAL_BAR327=null;

		Object CONCATENATION_OP325_tree=null;
		Object VERTICAL_BAR326_tree=null;
		Object VERTICAL_BAR327_tree=null;

		try {
			// PLSQLCommons.g:525:5: ( CONCATENATION_OP | VERTICAL_BAR VERTICAL_BAR )
			int alt102=2;
			int LA102_0 = input.LA(1);
			if ( (LA102_0==CONCATENATION_OP) ) {
				alt102=1;
			}
			else if ( (LA102_0==VERTICAL_BAR) ) {
				alt102=2;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 102, 0, input);
				throw nvae;
			}

			switch (alt102) {
				case 1 :
					// PLSQLCommons.g:525:10: CONCATENATION_OP
					{
					root_0 = (Object)adaptor.nil();


					CONCATENATION_OP325=(Token)match(input,CONCATENATION_OP,FOLLOW_CONCATENATION_OP_in_concatenation_op4820); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					CONCATENATION_OP325_tree = (Object)adaptor.create(CONCATENATION_OP325);
					adaptor.addChild(root_0, CONCATENATION_OP325_tree);
					}

					}
					break;
				case 2 :
					// PLSQLCommons.g:526:10: VERTICAL_BAR VERTICAL_BAR
					{
					root_0 = (Object)adaptor.nil();


					VERTICAL_BAR326=(Token)match(input,VERTICAL_BAR,FOLLOW_VERTICAL_BAR_in_concatenation_op4831); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					VERTICAL_BAR326_tree = (Object)adaptor.create(VERTICAL_BAR326);
					adaptor.addChild(root_0, VERTICAL_BAR326_tree);
					}

					VERTICAL_BAR327=(Token)match(input,VERTICAL_BAR,FOLLOW_VERTICAL_BAR_in_concatenation_op4833); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					VERTICAL_BAR327_tree = (Object)adaptor.create(VERTICAL_BAR327);
					adaptor.addChild(root_0, VERTICAL_BAR327_tree);
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "concatenation_op"


	public static class multiset_op_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "multiset_op"
	// PLSQLCommons.g:529:1: multiset_op : multiset_key ( except_key | intersect_key | union_key ) ( all_key | distinct_key )? ;
	public final PLSQLParser_PLSQLCommons.multiset_op_return multiset_op() throws RecognitionException {
		PLSQLParser_PLSQLCommons.multiset_op_return retval = new PLSQLParser_PLSQLCommons.multiset_op_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope multiset_key328 =null;
		ParserRuleReturnScope except_key329 =null;
		ParserRuleReturnScope intersect_key330 =null;
		ParserRuleReturnScope union_key331 =null;
		ParserRuleReturnScope all_key332 =null;
		ParserRuleReturnScope distinct_key333 =null;


		try {
			// PLSQLCommons.g:530:5: ( multiset_key ( except_key | intersect_key | union_key ) ( all_key | distinct_key )? )
			// PLSQLCommons.g:530:10: multiset_key ( except_key | intersect_key | union_key ) ( all_key | distinct_key )?
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_multiset_key_in_multiset_op4853);
			multiset_key328=gPLSQLParser.multiset_key();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, multiset_key328.getTree());

			// PLSQLCommons.g:531:10: ( except_key | intersect_key | union_key )
			int alt103=3;
			switch ( input.LA(1) ) {
			case REGULAR_ID:
				{
				alt103=1;
				}
				break;
			case SQL92_RESERVED_INTERSECT:
				{
				alt103=2;
				}
				break;
			case SQL92_RESERVED_UNION:
				{
				alt103=3;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 103, 0, input);
				throw nvae;
			}
			switch (alt103) {
				case 1 :
					// PLSQLCommons.g:531:12: except_key
					{
					pushFollow(FOLLOW_except_key_in_multiset_op4866);
					except_key329=gPLSQLParser.except_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, except_key329.getTree());

					}
					break;
				case 2 :
					// PLSQLCommons.g:531:25: intersect_key
					{
					pushFollow(FOLLOW_intersect_key_in_multiset_op4870);
					intersect_key330=gPLSQLParser.intersect_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, intersect_key330.getTree());

					}
					break;
				case 3 :
					// PLSQLCommons.g:531:41: union_key
					{
					pushFollow(FOLLOW_union_key_in_multiset_op4874);
					union_key331=gPLSQLParser.union_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, union_key331.getTree());

					}
					break;

			}

			// PLSQLCommons.g:532:10: ( all_key | distinct_key )?
			int alt104=3;
			int LA104_0 = input.LA(1);
			if ( (LA104_0==SQL92_RESERVED_ALL) ) {
				alt104=1;
			}
			else if ( (LA104_0==SQL92_RESERVED_DISTINCT) ) {
				alt104=2;
			}
			switch (alt104) {
				case 1 :
					// PLSQLCommons.g:532:12: all_key
					{
					pushFollow(FOLLOW_all_key_in_multiset_op4889);
					all_key332=gPLSQLParser.all_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, all_key332.getTree());

					}
					break;
				case 2 :
					// PLSQLCommons.g:532:22: distinct_key
					{
					pushFollow(FOLLOW_distinct_key_in_multiset_op4893);
					distinct_key333=gPLSQLParser.distinct_key();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, distinct_key333.getTree());

					}
					break;

			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "multiset_op"


	public static class outer_join_sign_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "outer_join_sign"
	// PLSQLCommons.g:535:1: outer_join_sign : LEFT_PAREN PLUS_SIGN RIGHT_PAREN ;
	public final PLSQLParser_PLSQLCommons.outer_join_sign_return outer_join_sign() throws RecognitionException {
		PLSQLParser_PLSQLCommons.outer_join_sign_return retval = new PLSQLParser_PLSQLCommons.outer_join_sign_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LEFT_PAREN334=null;
		Token PLUS_SIGN335=null;
		Token RIGHT_PAREN336=null;

		Object LEFT_PAREN334_tree=null;
		Object PLUS_SIGN335_tree=null;
		Object RIGHT_PAREN336_tree=null;

		try {
			// PLSQLCommons.g:536:5: ( LEFT_PAREN PLUS_SIGN RIGHT_PAREN )
			// PLSQLCommons.g:536:10: LEFT_PAREN PLUS_SIGN RIGHT_PAREN
			{
			root_0 = (Object)adaptor.nil();


			LEFT_PAREN334=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_outer_join_sign4916); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			LEFT_PAREN334_tree = (Object)adaptor.create(LEFT_PAREN334);
			adaptor.addChild(root_0, LEFT_PAREN334_tree);
			}

			PLUS_SIGN335=(Token)match(input,PLUS_SIGN,FOLLOW_PLUS_SIGN_in_outer_join_sign4918); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			PLUS_SIGN335_tree = (Object)adaptor.create(PLUS_SIGN335);
			adaptor.addChild(root_0, PLUS_SIGN335_tree);
			}

			RIGHT_PAREN336=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_outer_join_sign4920); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			RIGHT_PAREN336_tree = (Object)adaptor.create(RIGHT_PAREN336);
			adaptor.addChild(root_0, RIGHT_PAREN336_tree);
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "outer_join_sign"

	// $ANTLR start synpred1_PLSQLCommons
	public final void synpred1_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:86:10: ( ( as_key )? ( id | alias_quoted_string ) )
		// PLSQLCommons.g:86:10: ( as_key )? ( id | alias_quoted_string )
		{
		// PLSQLCommons.g:86:10: ( as_key )?
		int alt105=2;
		int LA105_0 = input.LA(1);
		if ( (LA105_0==SQL92_RESERVED_AS) ) {
			alt105=1;
		}
		switch (alt105) {
			case 1 :
				// PLSQLCommons.g:86:10: as_key
				{
				pushFollow(FOLLOW_as_key_in_synpred1_PLSQLCommons419);
				gPLSQLParser.as_key();
				state._fsp--;
				if (state.failed) return;

				}
				break;

		}

		// PLSQLCommons.g:86:18: ( id | alias_quoted_string )
		int alt106=2;
		int LA106_0 = input.LA(1);
		if ( (LA106_0==DELIMITED_ID||LA106_0==INTRODUCER||LA106_0==REGULAR_ID) ) {
			alt106=1;
		}
		else if ( ((LA106_0 >= CHAR_STRING && LA106_0 <= CHAR_STRING_PERL)||LA106_0==NATIONAL_CHAR_STRING_LIT) ) {
			alt106=2;
		}

		else {
			if (state.backtracking>0) {state.failed=true; return;}
			NoViableAltException nvae =
				new NoViableAltException("", 106, 0, input);
			throw nvae;
		}

		switch (alt106) {
			case 1 :
				// PLSQLCommons.g:86:19: id
				{
				pushFollow(FOLLOW_id_in_synpred1_PLSQLCommons423);
				id();
				state._fsp--;
				if (state.failed) return;

				}
				break;
			case 2 :
				// PLSQLCommons.g:86:22: alias_quoted_string
				{
				pushFollow(FOLLOW_alias_quoted_string_in_synpred1_PLSQLCommons425);
				alias_quoted_string();
				state._fsp--;
				if (state.failed) return;

				}
				break;

		}

		}

	}
	// $ANTLR end synpred1_PLSQLCommons

	// $ANTLR start synpred2_PLSQLCommons
	public final void synpred2_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:155:14: ( PERIOD id_expression )
		// PLSQLCommons.g:155:15: PERIOD id_expression
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred2_PLSQLCommons942); if (state.failed) return;

		pushFollow(FOLLOW_id_expression_in_synpred2_PLSQLCommons944);
		id_expression();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred2_PLSQLCommons

	// $ANTLR start synpred3_PLSQLCommons
	public final void synpred3_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:165:14: ( PERIOD id_expression )
		// PLSQLCommons.g:165:15: PERIOD id_expression
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred3_PLSQLCommons1041); if (state.failed) return;

		pushFollow(FOLLOW_id_expression_in_synpred3_PLSQLCommons1043);
		id_expression();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred3_PLSQLCommons

	// $ANTLR start synpred4_PLSQLCommons
	public final void synpred4_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:185:14: ( PERIOD id_expression )
		// PLSQLCommons.g:185:15: PERIOD id_expression
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred4_PLSQLCommons1202); if (state.failed) return;

		pushFollow(FOLLOW_id_expression_in_synpred4_PLSQLCommons1204);
		id_expression();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred4_PLSQLCommons

	// $ANTLR start synpred5_PLSQLCommons
	public final void synpred5_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:195:14: ( PERIOD id_expression )
		// PLSQLCommons.g:195:15: PERIOD id_expression
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred5_PLSQLCommons1291); if (state.failed) return;

		pushFollow(FOLLOW_id_expression_in_synpred5_PLSQLCommons1293);
		id_expression();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred5_PLSQLCommons

	// $ANTLR start synpred6_PLSQLCommons
	public final void synpred6_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:215:25: ( PERIOD id_expression )
		// PLSQLCommons.g:215:26: PERIOD id_expression
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred6_PLSQLCommons1447); if (state.failed) return;

		pushFollow(FOLLOW_id_expression_in_synpred6_PLSQLCommons1449);
		id_expression();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred6_PLSQLCommons

	// $ANTLR start synpred7_PLSQLCommons
	public final void synpred7_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:220:25: ( PERIOD id_expression )
		// PLSQLCommons.g:220:26: PERIOD id_expression
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred7_PLSQLCommons1498); if (state.failed) return;

		pushFollow(FOLLOW_id_expression_in_synpred7_PLSQLCommons1500);
		id_expression();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred7_PLSQLCommons

	// $ANTLR start synpred8_PLSQLCommons
	public final void synpred8_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:225:14: ( PERIOD id_expression )
		// PLSQLCommons.g:225:15: PERIOD id_expression
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred8_PLSQLCommons1549); if (state.failed) return;

		pushFollow(FOLLOW_id_expression_in_synpred8_PLSQLCommons1551);
		id_expression();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred8_PLSQLCommons

	// $ANTLR start synpred9_PLSQLCommons
	public final void synpred9_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:235:15: ( PERIOD id_expression )
		// PLSQLCommons.g:235:16: PERIOD id_expression
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred9_PLSQLCommons1621); if (state.failed) return;

		pushFollow(FOLLOW_id_expression_in_synpred9_PLSQLCommons1623);
		id_expression();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred9_PLSQLCommons

	// $ANTLR start synpred10_PLSQLCommons
	public final void synpred10_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:240:14: ( PERIOD id_expression )
		// PLSQLCommons.g:240:15: PERIOD id_expression
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred10_PLSQLCommons1674); if (state.failed) return;

		pushFollow(FOLLOW_id_expression_in_synpred10_PLSQLCommons1676);
		id_expression();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred10_PLSQLCommons

	// $ANTLR start synpred11_PLSQLCommons
	public final void synpred11_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:245:14: ( PERIOD id_expression )
		// PLSQLCommons.g:245:15: PERIOD id_expression
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred11_PLSQLCommons1727); if (state.failed) return;

		pushFollow(FOLLOW_id_expression_in_synpred11_PLSQLCommons1729);
		id_expression();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred11_PLSQLCommons

	// $ANTLR start synpred12_PLSQLCommons
	public final void synpred12_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:251:28: ( PERIOD id_expression )
		// PLSQLCommons.g:251:29: PERIOD id_expression
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred12_PLSQLCommons1798); if (state.failed) return;

		pushFollow(FOLLOW_id_expression_in_synpred12_PLSQLCommons1800);
		id_expression();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred12_PLSQLCommons

	// $ANTLR start synpred13_PLSQLCommons
	public final void synpred13_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:273:14: ( PERIOD id_expression )
		// PLSQLCommons.g:273:15: PERIOD id_expression
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred13_PLSQLCommons2002); if (state.failed) return;

		pushFollow(FOLLOW_id_expression_in_synpred13_PLSQLCommons2004);
		id_expression();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred13_PLSQLCommons

	// $ANTLR start synpred14_PLSQLCommons
	public final void synpred14_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:283:14: ( PERIOD id_expression )
		// PLSQLCommons.g:283:15: PERIOD id_expression
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred14_PLSQLCommons2090); if (state.failed) return;

		pushFollow(FOLLOW_id_expression_in_synpred14_PLSQLCommons2092);
		id_expression();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred14_PLSQLCommons

	// $ANTLR start synpred15_PLSQLCommons
	public final void synpred15_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:288:14: ( PERIOD id_expression )
		// PLSQLCommons.g:288:15: PERIOD id_expression
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred15_PLSQLCommons2143); if (state.failed) return;

		pushFollow(FOLLOW_id_expression_in_synpred15_PLSQLCommons2145);
		id_expression();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred15_PLSQLCommons

	// $ANTLR start synpred16_PLSQLCommons
	public final void synpred16_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:296:25: ( PERIOD id_expression )
		// PLSQLCommons.g:296:26: PERIOD id_expression
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred16_PLSQLCommons2237); if (state.failed) return;

		pushFollow(FOLLOW_id_expression_in_synpred16_PLSQLCommons2239);
		id_expression();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred16_PLSQLCommons

	// $ANTLR start synpred17_PLSQLCommons
	public final void synpred17_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:334:19: ( tableview_name PERIOD ASTERISK )
		// PLSQLCommons.g:334:20: tableview_name PERIOD ASTERISK
		{
		pushFollow(FOLLOW_tableview_name_in_synpred17_PLSQLCommons2634);
		tableview_name();
		state._fsp--;
		if (state.failed) return;

		match(input,PERIOD,FOLLOW_PERIOD_in_synpred17_PLSQLCommons2636); if (state.failed) return;

		match(input,ASTERISK,FOLLOW_ASTERISK_in_synpred17_PLSQLCommons2638); if (state.failed) return;

		}

	}
	// $ANTLR end synpred17_PLSQLCommons

	// $ANTLR start synpred18_PLSQLCommons
	public final void synpred18_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:349:11: ( id EQUALS_OP GREATER_THAN_OP )
		// PLSQLCommons.g:349:12: id EQUALS_OP GREATER_THAN_OP
		{
		pushFollow(FOLLOW_id_in_synpred18_PLSQLCommons2818);
		id();
		state._fsp--;
		if (state.failed) return;

		match(input,EQUALS_OP,FOLLOW_EQUALS_OP_in_synpred18_PLSQLCommons2820); if (state.failed) return;

		match(input,GREATER_THAN_OP,FOLLOW_GREATER_THAN_OP_in_synpred18_PLSQLCommons2822); if (state.failed) return;

		}

	}
	// $ANTLR end synpred18_PLSQLCommons

	// $ANTLR start synpred19_PLSQLCommons
	public final void synpred19_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:436:11: ( PERIOD general_element_part )
		// PLSQLCommons.g:436:12: PERIOD general_element_part
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred19_PLSQLCommons3882); if (state.failed) return;

		pushFollow(FOLLOW_general_element_part_in_synpred19_PLSQLCommons3884);
		general_element_part();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred19_PLSQLCommons

	// $ANTLR start synpred20_PLSQLCommons
	public final void synpred20_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:442:32: ( PERIOD general_element_part )
		// PLSQLCommons.g:442:33: PERIOD general_element_part
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred20_PLSQLCommons3960); if (state.failed) return;

		pushFollow(FOLLOW_general_element_part_in_synpred20_PLSQLCommons3962);
		general_element_part();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred20_PLSQLCommons

	// $ANTLR start synpred21_PLSQLCommons
	public final void synpred21_PLSQLCommons_fragment() throws RecognitionException {
		// PLSQLCommons.g:450:14: ( PERIOD id_expression )
		// PLSQLCommons.g:450:15: PERIOD id_expression
		{
		match(input,PERIOD,FOLLOW_PERIOD_in_synpred21_PLSQLCommons4053); if (state.failed) return;

		pushFollow(FOLLOW_id_expression_in_synpred21_PLSQLCommons4055);
		id_expression();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred21_PLSQLCommons

	// Delegated rules

	public final boolean synpred2_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred2_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred17_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred17_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred3_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred3_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred18_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred18_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred4_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred4_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred15_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred15_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred1_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred1_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred21_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred21_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred13_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred13_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred14_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred14_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred19_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred19_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred7_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred7_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred6_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred6_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred5_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred5_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred16_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred16_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred9_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred9_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred10_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred10_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred8_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred8_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred12_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred12_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred11_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred11_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred20_PLSQLCommons() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred20_PLSQLCommons_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}


	protected DFA34 dfa34 = new DFA34(this);
	protected DFA37 dfa37 = new DFA37(this);
	protected DFA56 dfa56 = new DFA56(this);
	protected DFA81 dfa81 = new DFA81(this);
	static final String DFA34_eotS =
		"\132\uffff";
	static final String DFA34_eofS =
		"\1\3\131\uffff";
	static final String DFA34_minS =
		"\1\5\1\uffff\1\0\127\uffff";
	static final String DFA34_maxS =
		"\1\u009a\1\uffff\1\0\127\uffff";
	static final String DFA34_acceptS =
		"\1\uffff\1\1\1\uffff\1\3\125\uffff\1\2";
	static final String DFA34_specialS =
		"\2\uffff\1\0\127\uffff}>";
	static final String[] DFA34_transitionS = {
			"\1\3\1\uffff\1\3\1\1\1\3\1\uffff\5\3\1\uffff\2\3\1\uffff\4\3\1\uffff"+
			"\2\3\1\uffff\7\3\1\uffff\1\3\1\uffff\3\3\1\uffff\2\3\2\uffff\1\3\11\uffff"+
			"\2\3\5\uffff\1\3\2\uffff\1\3\11\uffff\1\2\3\3\2\uffff\1\3\1\uffff\1\3"+
			"\1\uffff\10\3\1\uffff\1\3\2\uffff\7\3\1\uffff\2\3\1\uffff\5\3\2\uffff"+
			"\14\3\1\uffff\2\3\1\uffff\1\3\3\uffff\1\3\3\uffff\4\3\1\uffff\2\3\1\uffff"+
			"\3\3\2\uffff\2\3",
			"",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA34_eot = DFA.unpackEncodedString(DFA34_eotS);
	static final short[] DFA34_eof = DFA.unpackEncodedString(DFA34_eofS);
	static final char[] DFA34_min = DFA.unpackEncodedStringToUnsignedChars(DFA34_minS);
	static final char[] DFA34_max = DFA.unpackEncodedStringToUnsignedChars(DFA34_maxS);
	static final short[] DFA34_accept = DFA.unpackEncodedString(DFA34_acceptS);
	static final short[] DFA34_special = DFA.unpackEncodedString(DFA34_specialS);
	static final short[][] DFA34_transition;

	static {
		int numStates = DFA34_transitionS.length;
		DFA34_transition = new short[numStates][];
		for (int i=0; i<numStates; i++) {
			DFA34_transition[i] = DFA.unpackEncodedString(DFA34_transitionS[i]);
		}
	}

	protected class DFA34 extends DFA {

		public DFA34(BaseRecognizer recognizer) {
			this.recognizer = recognizer;
			this.decisionNumber = 34;
			this.eot = DFA34_eot;
			this.eof = DFA34_eof;
			this.min = DFA34_min;
			this.max = DFA34_max;
			this.accept = DFA34_accept;
			this.special = DFA34_special;
			this.transition = DFA34_transition;
		}
		@Override
		public String getDescription() {
			return "289:5: ( AT_SIGN link_name |{...}? => partition_extension_clause )?";
		}
		@Override
		public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
			TokenStream input = (TokenStream)_input;
			int _s = s;
			switch ( s ) {
					case 0 : 
						int LA34_2 = input.LA(1);
						 
						int index34_2 = input.index();
						input.rewind();
						s = -1;
						if ( ((((input.LT(1).getText().equalsIgnoreCase("subpartition"))||(input.LT(1).getText().equalsIgnoreCase("partition")))&&(!(input.LA(2) == SQL92_RESERVED_BY)))) ) {s = 89;}
						else if ( (true) ) {s = 3;}
						 
						input.seek(index34_2);
						if ( s>=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 34, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA37_eotS =
		"\107\uffff";
	static final String DFA37_eofS =
		"\1\2\106\uffff";
	static final String DFA37_minS =
		"\1\6\1\0\105\uffff";
	static final String DFA37_maxS =
		"\1\u009a\1\0\105\uffff";
	static final String DFA37_acceptS =
		"\2\uffff\1\2\103\uffff\1\1";
	static final String DFA37_specialS =
		"\1\uffff\1\0\105\uffff}>";
	static final String[] DFA37_transitionS = {
			"\2\2\3\uffff\3\2\1\uffff\1\2\1\uffff\2\2\1\uffff\2\2\1\uffff\1\2\1\uffff"+
			"\2\2\1\uffff\7\2\1\uffff\1\2\1\uffff\1\2\3\uffff\2\2\2\uffff\1\2\11\uffff"+
			"\2\2\5\uffff\1\2\2\uffff\1\2\11\uffff\1\1\3\2\2\uffff\1\2\3\uffff\1\2"+
			"\1\uffff\2\2\1\uffff\2\2\2\uffff\1\2\3\uffff\1\2\1\uffff\3\2\2\uffff"+
			"\2\2\3\uffff\3\2\2\uffff\11\2\2\uffff\1\2\1\uffff\2\2\5\uffff\1\2\3\uffff"+
			"\2\2\1\uffff\1\2\1\uffff\1\2\2\uffff\3\2\3\uffff\1\2",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA37_eot = DFA.unpackEncodedString(DFA37_eotS);
	static final short[] DFA37_eof = DFA.unpackEncodedString(DFA37_eofS);
	static final char[] DFA37_min = DFA.unpackEncodedStringToUnsignedChars(DFA37_minS);
	static final char[] DFA37_max = DFA.unpackEncodedStringToUnsignedChars(DFA37_maxS);
	static final short[] DFA37_accept = DFA.unpackEncodedString(DFA37_acceptS);
	static final short[] DFA37_special = DFA.unpackEncodedString(DFA37_specialS);
	static final short[][] DFA37_transition;

	static {
		int numStates = DFA37_transitionS.length;
		DFA37_transition = new short[numStates][];
		for (int i=0; i<numStates; i++) {
			DFA37_transition[i] = DFA.unpackEncodedString(DFA37_transitionS[i]);
		}
	}

	protected class DFA37 extends DFA {

		public DFA37(BaseRecognizer recognizer) {
			this.recognizer = recognizer;
			this.decisionNumber = 37;
			this.eot = DFA37_eot;
			this.eof = DFA37_eof;
			this.min = DFA37_min;
			this.max = DFA37_max;
			this.accept = DFA37_accept;
			this.special = DFA37_special;
			this.transition = DFA37_transition;
		}
		@Override
		public String getDescription() {
			return "310:22: ( over_clause )?";
		}
		@Override
		public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
			TokenStream input = (TokenStream)_input;
			int _s = s;
			switch ( s ) {
					case 0 : 
						int LA37_1 = input.LA(1);
						 
						int index37_1 = input.index();
						input.rewind();
						s = -1;
						if ( ((input.LT(1).getText().equalsIgnoreCase("over"))) ) {s = 70;}
						else if ( (true) ) {s = 2;}
						 
						input.seek(index37_1);
						if ( s>=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 37, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA56_eotS =
		"\33\uffff";
	static final String DFA56_eofS =
		"\33\uffff";
	static final String DFA56_minS =
		"\1\5\1\22\1\5\1\7\1\uffff\2\22\1\5\14\uffff\1\5\1\22\2\7\1\uffff\2\22";
	static final String DFA56_maxS =
		"\1\u0099\1\114\2\u009a\1\uffff\2\114\1\u0099\14\uffff\1\u0099\1\114\2"+
		"\u009a\1\uffff\2\114";
	static final String DFA56_acceptS =
		"\4\uffff\1\2\3\uffff\14\2\4\uffff\1\1\2\uffff";
	static final String DFA56_specialS =
		"\2\uffff\1\1\4\uffff\1\0\14\uffff\1\2\6\uffff}>";
	static final String[] DFA56_transitionS = {
			"\1\4\3\uffff\1\4\2\uffff\3\4\3\uffff\1\3\3\uffff\1\4\5\uffff\1\1\1\uffff"+
			"\1\4\2\uffff\2\4\4\uffff\2\4\31\uffff\1\4\11\uffff\1\2\7\uffff\1\4\2"+
			"\uffff\1\4\5\uffff\1\4\4\uffff\2\4\1\uffff\1\4\2\uffff\1\4\4\uffff\2"+
			"\4\15\uffff\2\4\6\uffff\1\4\11\uffff\1\4\12\uffff\1\4",
			"\1\6\71\uffff\1\5",
			"\1\20\1\uffff\1\23\1\uffff\1\17\1\uffff\1\23\2\21\1\17\1\23\1\uffff"+
			"\1\23\1\13\2\uffff\1\7\1\20\1\23\1\uffff\2\23\1\uffff\1\16\4\23\1\4\1"+
			"\21\1\uffff\1\23\1\uffff\1\23\1\15\1\10\2\uffff\1\23\26\uffff\1\4\11"+
			"\uffff\1\11\1\uffff\1\23\3\uffff\1\23\1\uffff\1\12\1\uffff\1\23\1\15"+
			"\3\uffff\1\23\1\uffff\1\14\5\uffff\1\20\1\uffff\1\22\2\uffff\1\12\4\uffff"+
			"\1\15\1\22\7\uffff\1\23\3\uffff\3\23\1\22\3\uffff\1\23\2\uffff\1\10\11"+
			"\uffff\1\22\12\uffff\1\20\1\23",
			"\1\23\3\uffff\1\23\3\uffff\1\23\1\uffff\1\23\3\uffff\1\24\1\uffff\1"+
			"\23\1\uffff\2\23\2\uffff\5\23\2\uffff\1\23\1\uffff\1\23\4\uffff\1\23"+
			"\26\uffff\1\23\11\uffff\1\23\1\uffff\1\23\3\uffff\1\23\3\uffff\1\23\4"+
			"\uffff\1\23\1\uffff\1\23\30\uffff\1\23\3\uffff\3\23\4\uffff\1\23\30\uffff"+
			"\1\23",
			"",
			"\1\27\23\uffff\1\25\45\uffff\1\26",
			"\1\27\23\uffff\1\25\45\uffff\1\26",
			"\1\23\3\uffff\1\23\2\uffff\3\23\3\uffff\1\23\3\uffff\1\23\2\uffff\1"+
			"\30\2\uffff\1\23\1\uffff\1\23\2\uffff\2\23\4\uffff\2\23\31\uffff\1\23"+
			"\11\uffff\1\23\7\uffff\1\23\2\uffff\1\23\5\uffff\1\23\5\uffff\1\23\1"+
			"\uffff\1\23\2\uffff\1\23\4\uffff\2\23\16\uffff\1\23\6\uffff\1\23\11\uffff"+
			"\1\23\12\uffff\1\23",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"\1\23\3\uffff\1\23\2\uffff\3\23\3\uffff\1\23\3\uffff\1\23\2\uffff\1"+
			"\30\2\uffff\1\23\1\uffff\1\23\2\uffff\2\23\4\uffff\2\23\31\uffff\1\23"+
			"\11\uffff\1\23\7\uffff\1\23\2\uffff\1\23\5\uffff\1\23\5\uffff\1\23\1"+
			"\uffff\1\23\2\uffff\1\23\4\uffff\2\23\16\uffff\1\23\6\uffff\1\23\11\uffff"+
			"\1\23\12\uffff\1\23",
			"\1\32\71\uffff\1\31",
			"\1\23\3\uffff\1\23\3\uffff\1\23\1\uffff\1\23\3\uffff\1\24\1\uffff\1"+
			"\23\1\uffff\2\23\2\uffff\5\23\2\uffff\1\23\1\uffff\1\23\4\uffff\1\23"+
			"\26\uffff\1\23\11\uffff\1\23\1\uffff\1\23\3\uffff\1\23\3\uffff\1\23\4"+
			"\uffff\1\23\32\uffff\1\23\3\uffff\3\23\4\uffff\1\23\30\uffff\1\23",
			"\1\23\3\uffff\1\23\3\uffff\1\23\1\uffff\1\23\3\uffff\1\24\1\uffff\1"+
			"\23\1\uffff\2\23\2\uffff\5\23\2\uffff\1\23\1\uffff\1\23\4\uffff\1\23"+
			"\26\uffff\1\23\11\uffff\1\23\1\uffff\1\23\3\uffff\1\23\3\uffff\1\23\4"+
			"\uffff\1\23\32\uffff\1\23\3\uffff\3\23\4\uffff\1\23\30\uffff\1\23",
			"",
			"\1\27\23\uffff\1\25\45\uffff\1\26",
			"\1\27\23\uffff\1\25\45\uffff\1\26"
	};

	static final short[] DFA56_eot = DFA.unpackEncodedString(DFA56_eotS);
	static final short[] DFA56_eof = DFA.unpackEncodedString(DFA56_eofS);
	static final char[] DFA56_min = DFA.unpackEncodedStringToUnsignedChars(DFA56_minS);
	static final char[] DFA56_max = DFA.unpackEncodedStringToUnsignedChars(DFA56_maxS);
	static final short[] DFA56_accept = DFA.unpackEncodedString(DFA56_acceptS);
	static final short[] DFA56_special = DFA.unpackEncodedString(DFA56_specialS);
	static final short[][] DFA56_transition;

	static {
		int numStates = DFA56_transitionS.length;
		DFA56_transition = new short[numStates][];
		for (int i=0; i<numStates; i++) {
			DFA56_transition[i] = DFA.unpackEncodedString(DFA56_transitionS[i]);
		}
	}

	protected class DFA56 extends DFA {

		public DFA56(BaseRecognizer recognizer) {
			this.recognizer = recognizer;
			this.decisionNumber = 56;
			this.eot = DFA56_eot;
			this.eof = DFA56_eof;
			this.min = DFA56_min;
			this.max = DFA56_max;
			this.accept = DFA56_accept;
			this.special = DFA56_special;
			this.transition = DFA56_transition;
		}
		@Override
		public String getDescription() {
			return "349:10: ( ( id EQUALS_OP GREATER_THAN_OP )=> id EQUALS_OP GREATER_THAN_OP )?";
		}
		@Override
		public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
			TokenStream input = (TokenStream)_input;
			int _s = s;
			switch ( s ) {
					case 0 : 
						int LA56_7 = input.LA(1);
						 
						int index56_7 = input.index();
						input.rewind();
						s = -1;
						if ( (LA56_7==GREATER_THAN_OP) && (synpred18_PLSQLCommons())) {s = 24;}
						else if ( (LA56_7==APPROXIMATE_NUM_LIT||LA56_7==BINDVAR||(LA56_7 >= CHAR_STRING && LA56_7 <= COLON)||LA56_7==DELIMITED_ID||LA56_7==EXACT_NUM_LIT||LA56_7==INTRODUCER||LA56_7==LEFT_PAREN||(LA56_7 >= MINUS_SIGN && LA56_7 <= NATIONAL_CHAR_STRING_LIT)||(LA56_7 >= PLSQL_NON_RESERVED_CAST && LA56_7 <= PLSQL_NON_RESERVED_CONNECT_BY_ROOT)||LA56_7==PLUS_SIGN||LA56_7==REGULAR_ID||LA56_7==SQL92_RESERVED_ALL||LA56_7==SQL92_RESERVED_ANY||LA56_7==SQL92_RESERVED_CASE||LA56_7==SQL92_RESERVED_DATE||LA56_7==SQL92_RESERVED_DEFAULT||LA56_7==SQL92_RESERVED_DISTINCT||(LA56_7 >= SQL92_RESERVED_EXISTS && LA56_7 <= SQL92_RESERVED_FALSE)||LA56_7==SQL92_RESERVED_NULL||LA56_7==SQL92_RESERVED_PRIOR||LA56_7==SQL92_RESERVED_TRUE||LA56_7==UNSIGNED_INTEGER) ) {s = 19;}
						 
						input.seek(index56_7);
						if ( s>=0 ) return s;
						break;

					case 1 : 
						int LA56_2 = input.LA(1);
						 
						int index56_2 = input.index();
						input.rewind();
						s = -1;
						if ( (LA56_2==EQUALS_OP) ) {s = 7;}
						else if ( (LA56_2==MINUS_SIGN||LA56_2==PLUS_SIGN) ) {s = 4;}
						else if ( (LA56_2==PLSQL_NON_RESERVED_CONNECT_BY_ROOT||LA56_2==SQL92_RESERVED_PRIOR) && (((input.LT(1).getText().equalsIgnoreCase("new"))&&(input.LT(1).getText().equalsIgnoreCase("new") && !input.LT(2).getText().equals("."))))) {s = 8;}
						else if ( (LA56_2==REGULAR_ID) ) {s = 9;}
						else if ( (LA56_2==SQL92_RESERVED_ALL||LA56_2==SQL92_RESERVED_DISTINCT) && (((input.LT(1).getText().equalsIgnoreCase("new"))&&(input.LT(1).getText().equalsIgnoreCase("new") && !input.LT(2).getText().equals("."))))) {s = 10;}
						else if ( (LA56_2==DELIMITED_ID) && (((input.LT(1).getText().equalsIgnoreCase("interval"))||((input.LT(1).getText().equalsIgnoreCase("new"))&&(input.LT(1).getText().equalsIgnoreCase("new") && !input.LT(2).getText().equals(".")))))) {s = 11;}
						else if ( (LA56_2==SQL92_RESERVED_CASE) ) {s = 12;}
						else if ( (LA56_2==PLSQL_NON_RESERVED_CAST||LA56_2==SQL92_RESERVED_ANY||LA56_2==SQL92_RESERVED_EXISTS) && (((input.LT(1).getText().equalsIgnoreCase("new"))&&(input.LT(1).getText().equalsIgnoreCase("new") && !input.LT(2).getText().equals("."))))) {s = 13;}
						else if ( (LA56_2==INTRODUCER) && (((input.LT(1).getText().equalsIgnoreCase("interval"))||((input.LT(1).getText().equalsIgnoreCase("new"))&&(input.LT(1).getText().equalsIgnoreCase("new") && !input.LT(2).getText().equals(".")))))) {s = 14;}
						else if ( (LA56_2==BINDVAR||LA56_2==COLON) ) {s = 15;}
						else if ( (LA56_2==APPROXIMATE_NUM_LIT||LA56_2==EXACT_NUM_LIT||LA56_2==SQL92_RESERVED_DATE||LA56_2==UNSIGNED_INTEGER) && (((input.LT(1).getText().equalsIgnoreCase("new"))&&(input.LT(1).getText().equalsIgnoreCase("new") && !input.LT(2).getText().equals("."))))) {s = 16;}
						else if ( ((LA56_2 >= CHAR_STRING && LA56_2 <= CHAR_STRING_PERL)||LA56_2==NATIONAL_CHAR_STRING_LIT) ) {s = 17;}
						else if ( (LA56_2==SQL92_RESERVED_DEFAULT||LA56_2==SQL92_RESERVED_FALSE||LA56_2==SQL92_RESERVED_NULL||LA56_2==SQL92_RESERVED_TRUE) && (((input.LT(1).getText().equalsIgnoreCase("new"))&&(input.LT(1).getText().equalsIgnoreCase("new") && !input.LT(2).getText().equals("."))))) {s = 18;}
						else if ( (LA56_2==ASTERISK||LA56_2==CARRET_OPERATOR_PART||LA56_2==COMMA||LA56_2==CONCATENATION_OP||LA56_2==EXCLAMATION_OPERATOR_PART||(LA56_2 >= GREATER_THAN_OP && LA56_2 <= GREATER_THAN_OR_EQUALS_OP)||(LA56_2 >= LEFT_BRACKET && LA56_2 <= LESS_THAN_OR_EQUALS_OP)||LA56_2==NOT_EQUAL_OP||LA56_2==PERIOD||LA56_2==PLSQL_NON_RESERVED_MULTISET||LA56_2==RIGHT_PAREN||LA56_2==SOLIDUS||LA56_2==SQL92_RESERVED_AND||LA56_2==SQL92_RESERVED_BETWEEN||LA56_2==SQL92_RESERVED_IN||(LA56_2 >= SQL92_RESERVED_IS && LA56_2 <= SQL92_RESERVED_NOT)||LA56_2==SQL92_RESERVED_OR||LA56_2==VERTICAL_BAR) ) {s = 19;}
						 
						input.seek(index56_2);
						if ( s>=0 ) return s;
						break;

					case 2 : 
						int LA56_20 = input.LA(1);
						 
						int index56_20 = input.index();
						input.rewind();
						s = -1;
						if ( (LA56_20==GREATER_THAN_OP) && (synpred18_PLSQLCommons())) {s = 24;}
						else if ( (LA56_20==APPROXIMATE_NUM_LIT||LA56_20==BINDVAR||(LA56_20 >= CHAR_STRING && LA56_20 <= COLON)||LA56_20==DELIMITED_ID||LA56_20==EXACT_NUM_LIT||LA56_20==INTRODUCER||LA56_20==LEFT_PAREN||(LA56_20 >= MINUS_SIGN && LA56_20 <= NATIONAL_CHAR_STRING_LIT)||(LA56_20 >= PLSQL_NON_RESERVED_CAST && LA56_20 <= PLSQL_NON_RESERVED_CONNECT_BY_ROOT)||LA56_20==PLUS_SIGN||LA56_20==REGULAR_ID||LA56_20==SQL92_RESERVED_ALL||LA56_20==SQL92_RESERVED_ANY||LA56_20==SQL92_RESERVED_CASE||LA56_20==SQL92_RESERVED_DATE||LA56_20==SQL92_RESERVED_DEFAULT||LA56_20==SQL92_RESERVED_DISTINCT||(LA56_20 >= SQL92_RESERVED_EXISTS && LA56_20 <= SQL92_RESERVED_FALSE)||LA56_20==SQL92_RESERVED_NULL||LA56_20==SQL92_RESERVED_PRIOR||LA56_20==SQL92_RESERVED_TRUE||LA56_20==UNSIGNED_INTEGER) ) {s = 19;}
						 
						input.seek(index56_20);
						if ( s>=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 56, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA81_eotS =
		"\106\uffff";
	static final String DFA81_eofS =
		"\1\2\105\uffff";
	static final String DFA81_minS =
		"\1\6\105\uffff";
	static final String DFA81_maxS =
		"\1\u009a\105\uffff";
	static final String DFA81_acceptS =
		"\1\uffff\1\1\1\2\103\uffff";
	static final String DFA81_specialS =
		"\106\uffff}>";
	static final String[] DFA81_transitionS = {
			"\2\2\3\uffff\3\2\1\uffff\1\2\1\uffff\2\2\1\uffff\2\2\1\uffff\1\2\1\uffff"+
			"\2\2\1\uffff\2\2\1\1\4\2\1\uffff\1\2\1\uffff\1\2\3\uffff\2\2\2\uffff"+
			"\1\2\11\uffff\2\2\5\uffff\1\2\2\uffff\1\2\11\uffff\4\2\2\uffff\1\2\3"+
			"\uffff\1\2\1\uffff\2\2\1\uffff\2\2\2\uffff\1\2\3\uffff\1\2\1\uffff\3"+
			"\2\2\uffff\2\2\3\uffff\3\2\2\uffff\11\2\2\uffff\1\2\1\uffff\2\2\5\uffff"+
			"\1\2\3\uffff\2\2\1\uffff\1\2\1\uffff\1\2\2\uffff\3\2\3\uffff\1\2",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA81_eot = DFA.unpackEncodedString(DFA81_eotS);
	static final short[] DFA81_eof = DFA.unpackEncodedString(DFA81_eofS);
	static final char[] DFA81_min = DFA.unpackEncodedStringToUnsignedChars(DFA81_minS);
	static final char[] DFA81_max = DFA.unpackEncodedStringToUnsignedChars(DFA81_maxS);
	static final short[] DFA81_accept = DFA.unpackEncodedString(DFA81_acceptS);
	static final short[] DFA81_special = DFA.unpackEncodedString(DFA81_specialS);
	static final short[][] DFA81_transition;

	static {
		int numStates = DFA81_transitionS.length;
		DFA81_transition = new short[numStates][];
		for (int i=0; i<numStates; i++) {
			DFA81_transition[i] = DFA.unpackEncodedString(DFA81_transitionS[i]);
		}
	}

	protected class DFA81 extends DFA {

		public DFA81(BaseRecognizer recognizer) {
			this.recognizer = recognizer;
			this.decisionNumber = 81;
			this.eot = DFA81_eot;
			this.eof = DFA81_eof;
			this.min = DFA81_min;
			this.max = DFA81_max;
			this.accept = DFA81_accept;
			this.special = DFA81_special;
			this.transition = DFA81_transition;
		}
		@Override
		public String getDescription() {
			return "450:62: ( function_argument )?";
		}
	}

	public static final BitSet FOLLOW_subpartition_key_in_partition_extension_clause367 = new BitSet(new long[]{0x0000000040000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_partition_key_in_partition_extension_clause372 = new BitSet(new long[]{0x0000000040000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_for_key_in_partition_extension_clause386 = new BitSet(new long[]{0x0000000040000000L});
	public static final BitSet FOLLOW_expression_list_in_partition_extension_clause390 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_as_key_in_column_alias419 = new BitSet(new long[]{0x0000000410043000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_in_column_alias423 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_alias_quoted_string_in_column_alias425 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_as_key_in_column_alias456 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_table_alias478 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_alias_quoted_string_in_table_alias482 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_quoted_string_in_alias_quoted_string522 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_where_key_in_where_clause555 = new BitSet(new long[]{0x0000018650447220L,0x3000612E20901004L,0x0000000002004010L});
	public static final BitSet FOLLOW_current_of_clause_in_where_clause559 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_condition_wrapper_in_where_clause561 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_current_key_in_current_of_clause582 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
	public static final BitSet FOLLOW_of_key_in_current_of_clause585 = new BitSet(new long[]{0x0000000010044200L,0x0000000000001000L});
	public static final BitSet FOLLOW_cursor_name_in_current_of_clause588 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_into_key_in_into_clause608 = new BitSet(new long[]{0x0000000010044200L,0x0000000000001000L});
	public static final BitSet FOLLOW_variable_name_in_into_clause611 = new BitSet(new long[]{0x0000000000008002L});
	public static final BitSet FOLLOW_COMMA_in_into_clause614 = new BitSet(new long[]{0x0000000010044200L,0x0000000000001000L});
	public static final BitSet FOLLOW_variable_name_in_into_clause617 = new BitSet(new long[]{0x0000000000008002L});
	public static final BitSet FOLLOW_bulk_key_in_into_clause631 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_collect_key_in_into_clause634 = new BitSet(new long[]{0x0000000000000000L,0x0200000000000000L});
	public static final BitSet FOLLOW_into_key_in_into_clause637 = new BitSet(new long[]{0x0000000010044200L,0x0000000000001000L});
	public static final BitSet FOLLOW_variable_name_in_into_clause640 = new BitSet(new long[]{0x0000000000008002L});
	public static final BitSet FOLLOW_COMMA_in_into_clause643 = new BitSet(new long[]{0x0000000010044200L,0x0000000000001000L});
	public static final BitSet FOLLOW_variable_name_in_into_clause646 = new BitSet(new long[]{0x0000000000008002L});
	public static final BitSet FOLLOW_id_in_xml_column_name673 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_quoted_string_in_xml_column_name692 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_cost_class_name721 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_attribute_name757 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_savepoint_name793 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_rollback_segment_name829 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_table_var_name866 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_schema_name902 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_routine_name938 = new BitSet(new long[]{0x0000004000000102L});
	public static final BitSet FOLLOW_PERIOD_in_routine_name948 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_routine_name950 = new BitSet(new long[]{0x0000004000000102L});
	public static final BitSet FOLLOW_AT_SIGN_in_routine_name955 = new BitSet(new long[]{0x0000000010040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_link_name_in_routine_name957 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_package_name1001 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_implementation_type_name1037 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_PERIOD_in_implementation_type_name1047 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_implementation_type_name1049 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_parameter_name1090 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_reference_model_name1126 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_main_model_name1162 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_aggregate_function_name1198 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_PERIOD_in_aggregate_function_name1208 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_aggregate_function_name1210 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_id_in_query_name1251 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_constraint_name1287 = new BitSet(new long[]{0x0000004000000102L});
	public static final BitSet FOLLOW_PERIOD_in_constraint_name1297 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_constraint_name1299 = new BitSet(new long[]{0x0000004000000102L});
	public static final BitSet FOLLOW_AT_SIGN_in_constraint_name1304 = new BitSet(new long[]{0x0000000010040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_link_name_in_constraint_name1306 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_expression_in_id_expression21349 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SQL92_RESERVED_EXISTS_in_id_expression21351 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_expression2_in_label_name21371 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_expression_in_label_name1407 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_expression_in_type_name1443 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_PERIOD_in_type_name1453 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_type_name1455 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_id_expression_in_sequence_name1494 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_PERIOD_in_sequence_name1504 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_sequence_name1506 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_id_in_exception_name1545 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_PERIOD_in_exception_name1555 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_exception_name1557 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_id_in_id21595 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SQL92_RESERVED_EXISTS_in_id21599 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id2_in_function_name1617 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_PERIOD_in_function_name1627 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_function_name1629 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_procedure_name1670 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_PERIOD_in_procedure_name1680 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_procedure_name1682 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_trigger_name1723 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_PERIOD_in_trigger_name1733 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_trigger_name1735 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_INTRODUCER_in_variable_name1776 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_char_set_name_in_variable_name1778 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_variable_name1794 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_PERIOD_in_variable_name1804 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_variable_name1806 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_bind_variable_in_variable_name1839 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_index_name1875 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_cursor_name1912 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_bind_variable_in_cursor_name1916 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_record_name1958 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_bind_variable_in_record_name1962 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_collection_name1998 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_PERIOD_in_collection_name2008 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_collection_name2010 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_link_name2050 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_column_name2086 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_PERIOD_in_column_name2096 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_column_name2098 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_id_in_tableview_name2139 = new BitSet(new long[]{0x0000004000000102L,0x0000000000001000L});
	public static final BitSet FOLLOW_PERIOD_in_tableview_name2149 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_tableview_name2151 = new BitSet(new long[]{0x0000000000000102L,0x0000000000001000L});
	public static final BitSet FOLLOW_AT_SIGN_in_tableview_name2165 = new BitSet(new long[]{0x0000000010040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_link_name_in_tableview_name2167 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_partition_extension_clause_in_tableview_name2181 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_expression_in_char_set_name2233 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_PERIOD_in_char_set_name2243 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_char_set_name2245 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_keep_key_in_keep_clause2287 = new BitSet(new long[]{0x0000000040000000L});
	public static final BitSet FOLLOW_LEFT_PAREN_in_keep_clause2298 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_dense_rank_key_in_keep_clause2313 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_first_key_in_keep_clause2316 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
	public static final BitSet FOLLOW_last_key_in_keep_clause2318 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
	public static final BitSet FOLLOW_order_by_clause_in_keep_clause2334 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_RIGHT_PAREN_in_keep_clause2344 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
	public static final BitSet FOLLOW_over_clause_in_keep_clause2347 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_LEFT_PAREN_in_function_argument2368 = new BitSet(new long[]{0x000001865044F220L,0x3000612C20905004L,0x0000000002004010L});
	public static final BitSet FOLLOW_argument_in_function_argument2383 = new BitSet(new long[]{0x0000000000008000L,0x0000000000004000L});
	public static final BitSet FOLLOW_COMMA_in_function_argument2387 = new BitSet(new long[]{0x0000018650447220L,0x3000612C20901004L,0x0000000002004010L});
	public static final BitSet FOLLOW_argument_in_function_argument2389 = new BitSet(new long[]{0x0000000000008000L,0x0000000000004000L});
	public static final BitSet FOLLOW_RIGHT_PAREN_in_function_argument2403 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
	public static final BitSet FOLLOW_keep_clause_in_function_argument2413 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_LEFT_PAREN_in_function_argument_analytic2454 = new BitSet(new long[]{0x000001865044F220L,0x3000612C20905004L,0x0000000002004010L});
	public static final BitSet FOLLOW_argument_in_function_argument_analytic2469 = new BitSet(new long[]{0x0000000000008000L,0x0000000000005000L});
	public static final BitSet FOLLOW_respect_or_ignore_nulls_in_function_argument_analytic2471 = new BitSet(new long[]{0x0000000000008000L,0x0000000000004000L});
	public static final BitSet FOLLOW_COMMA_in_function_argument_analytic2489 = new BitSet(new long[]{0x0000018650447220L,0x3000612C20901004L,0x0000000002004010L});
	public static final BitSet FOLLOW_argument_in_function_argument_analytic2491 = new BitSet(new long[]{0x0000000000008000L,0x0000000000005000L});
	public static final BitSet FOLLOW_respect_or_ignore_nulls_in_function_argument_analytic2493 = new BitSet(new long[]{0x0000000000008000L,0x0000000000004000L});
	public static final BitSet FOLLOW_RIGHT_PAREN_in_function_argument_analytic2508 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
	public static final BitSet FOLLOW_keep_clause_in_function_argument_analytic2519 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_LEFT_PAREN_in_function_argument_modeling2561 = new BitSet(new long[]{0x0000000010040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_column_name_in_function_argument_modeling2575 = new BitSet(new long[]{0x0000400000008000L});
	public static final BitSet FOLLOW_COMMA_in_function_argument_modeling2578 = new BitSet(new long[]{0x0000000000400020L,0x2000000000000000L,0x0000000002000000L});
	public static final BitSet FOLLOW_numeric_in_function_argument_modeling2581 = new BitSet(new long[]{0x0000400000008000L});
	public static final BitSet FOLLOW_null_key_in_function_argument_modeling2583 = new BitSet(new long[]{0x0000400000008000L});
	public static final BitSet FOLLOW_COMMA_in_function_argument_modeling2587 = new BitSet(new long[]{0x0000000000400020L,0x2000000000000000L,0x0000000002000000L});
	public static final BitSet FOLLOW_numeric_in_function_argument_modeling2590 = new BitSet(new long[]{0x0000400000000000L});
	public static final BitSet FOLLOW_null_key_in_function_argument_modeling2592 = new BitSet(new long[]{0x0000400000000000L});
	public static final BitSet FOLLOW_using_key_in_function_argument_modeling2613 = new BitSet(new long[]{0x00000186504472A0L,0x3000612C20901004L,0x0000000002004010L});
	public static final BitSet FOLLOW_tableview_name_in_function_argument_modeling2642 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_PERIOD_in_function_argument_modeling2644 = new BitSet(new long[]{0x0000000000000080L});
	public static final BitSet FOLLOW_ASTERISK_in_function_argument_modeling2646 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_ASTERISK_in_function_argument_modeling2666 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_expression_in_function_argument_modeling2686 = new BitSet(new long[]{0x000000041004B000L,0x0000000001005000L});
	public static final BitSet FOLLOW_column_alias_in_function_argument_modeling2688 = new BitSet(new long[]{0x0000000000008000L,0x0000000000004000L});
	public static final BitSet FOLLOW_COMMA_in_function_argument_modeling2692 = new BitSet(new long[]{0x0000018650447220L,0x3000612C20901004L,0x0000000002004010L});
	public static final BitSet FOLLOW_expression_in_function_argument_modeling2694 = new BitSet(new long[]{0x000000041004B000L,0x0000000001005000L});
	public static final BitSet FOLLOW_column_alias_in_function_argument_modeling2696 = new BitSet(new long[]{0x0000000000008000L,0x0000000000004000L});
	public static final BitSet FOLLOW_RIGHT_PAREN_in_function_argument_modeling2728 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
	public static final BitSet FOLLOW_keep_clause_in_function_argument_modeling2739 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_respect_key_in_respect_or_ignore_nulls2781 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_ignore_key_in_respect_or_ignore_nulls2785 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_nulls_key_in_respect_or_ignore_nulls2788 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_argument2826 = new BitSet(new long[]{0x0000000000200000L});
	public static final BitSet FOLLOW_EQUALS_OP_in_argument2828 = new BitSet(new long[]{0x0000000002000000L});
	public static final BitSet FOLLOW_GREATER_THAN_OP_in_argument2830 = new BitSet(new long[]{0x0000018650447220L,0x3000612C20901004L,0x0000000002004010L});
	public static final BitSet FOLLOW_expression_wrapper_in_argument2836 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_datatype_in_type_spec2897 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ref_key_in_type_spec2908 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_type_name_in_type_spec2911 = new BitSet(new long[]{0x0000002000000002L});
	public static final BitSet FOLLOW_percent_rowtype_key_in_type_spec2914 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_percent_type_key_in_type_spec2916 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_native_datatype_element_in_datatype2955 = new BitSet(new long[]{0x0000000040000002L,0x0000000000000000L,0x0000000000400000L});
	public static final BitSet FOLLOW_precision_part_in_datatype2965 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000400000L});
	public static final BitSet FOLLOW_with_key_in_datatype2977 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_local_key_in_datatype2979 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_time_key_in_datatype2982 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_zone_key_in_datatype2984 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_interval_key_in_datatype3022 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_year_key_in_datatype3025 = new BitSet(new long[]{0x0000000040000000L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_day_key_in_datatype3027 = new BitSet(new long[]{0x0000000040000000L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_LEFT_PAREN_in_datatype3047 = new BitSet(new long[]{0x0000018650447220L,0x3000612C20901004L,0x0000000002004010L});
	public static final BitSet FOLLOW_expression_wrapper_in_datatype3049 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_RIGHT_PAREN_in_datatype3051 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_to_key_in_datatype3068 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_month_key_in_datatype3071 = new BitSet(new long[]{0x0000000040000002L});
	public static final BitSet FOLLOW_second_key_in_datatype3073 = new BitSet(new long[]{0x0000000040000002L});
	public static final BitSet FOLLOW_LEFT_PAREN_in_datatype3094 = new BitSet(new long[]{0x0000018650447220L,0x3000612C20901004L,0x0000000002004010L});
	public static final BitSet FOLLOW_expression_wrapper_in_datatype3096 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_RIGHT_PAREN_in_datatype3098 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_LEFT_PAREN_in_precision_part3150 = new BitSet(new long[]{0x0000000000400020L,0x0000000000000000L,0x0000000002000000L});
	public static final BitSet FOLLOW_numeric_in_precision_part3152 = new BitSet(new long[]{0x0000000000008000L,0x0000000000005000L});
	public static final BitSet FOLLOW_COMMA_in_precision_part3155 = new BitSet(new long[]{0x0000000000400020L,0x0000000000000000L,0x0000000002000000L});
	public static final BitSet FOLLOW_numeric_in_precision_part3157 = new BitSet(new long[]{0x0000000000000000L,0x0000000000005000L});
	public static final BitSet FOLLOW_char_key_in_precision_part3162 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_byte_key_in_precision_part3166 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_RIGHT_PAREN_in_precision_part3170 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_binary_integer_key_in_native_datatype_element3213 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_pls_integer_key_in_native_datatype_element3224 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_natural_key_in_native_datatype_element3235 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_binary_float_key_in_native_datatype_element3246 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_binary_double_key_in_native_datatype_element3257 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_naturaln_key_in_native_datatype_element3268 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_positive_key_in_native_datatype_element3279 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_positiven_key_in_native_datatype_element3290 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_signtype_key_in_native_datatype_element3301 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_simple_integer_key_in_native_datatype_element3312 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_nvarchar2_key_in_native_datatype_element3323 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_dec_key_in_native_datatype_element3334 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_integer_key_in_native_datatype_element3345 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_int_key_in_native_datatype_element3356 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_numeric_key_in_native_datatype_element3367 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_smallint_key_in_native_datatype_element3378 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_number_key_in_native_datatype_element3389 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_decimal_key_in_native_datatype_element3400 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_double_key_in_native_datatype_element3412 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
	public static final BitSet FOLLOW_precision_key_in_native_datatype_element3414 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_float_key_in_native_datatype_element3426 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_real_key_in_native_datatype_element3437 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_nchar_key_in_native_datatype_element3448 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_long_key_in_native_datatype_element3459 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
	public static final BitSet FOLLOW_raw_key_in_native_datatype_element3461 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_char_key_in_native_datatype_element3473 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_character_key_in_native_datatype_element3486 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_varchar2_key_in_native_datatype_element3498 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_varchar_key_in_native_datatype_element3509 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_string_key_in_native_datatype_element3520 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_raw_key_in_native_datatype_element3531 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_boolean_key_in_native_datatype_element3542 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_date_key_in_native_datatype_element3553 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_rowid_key_in_native_datatype_element3564 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_urowid_key_in_native_datatype_element3575 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_year_key_in_native_datatype_element3586 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_month_key_in_native_datatype_element3597 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_day_key_in_native_datatype_element3608 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_hour_key_in_native_datatype_element3619 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_minute_key_in_native_datatype_element3630 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_second_key_in_native_datatype_element3641 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_timezone_hour_key_in_native_datatype_element3652 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_timezone_minute_key_in_native_datatype_element3663 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_timezone_region_key_in_native_datatype_element3674 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_timezone_abbr_key_in_native_datatype_element3685 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_timestamp_key_in_native_datatype_element3696 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_timestamp_unconstrained_key_in_native_datatype_element3707 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_timestamp_tz_unconstrained_key_in_native_datatype_element3718 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_timestamp_ltz_unconstrained_key_in_native_datatype_element3729 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_yminterval_unconstrained_key_in_native_datatype_element3740 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_dsinterval_unconstrained_key_in_native_datatype_element3751 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_bfile_key_in_native_datatype_element3762 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_blob_key_in_native_datatype_element3773 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_clob_key_in_native_datatype_element3784 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_nclob_key_in_native_datatype_element3795 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_mlslabel_key_in_native_datatype_element3806 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_BINDVAR_in_bind_variable3830 = new BitSet(new long[]{0x0000004000004202L,0x0000000000001000L});
	public static final BitSet FOLLOW_COLON_in_bind_variable3834 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000002000000L});
	public static final BitSet FOLLOW_UNSIGNED_INTEGER_in_bind_variable3838 = new BitSet(new long[]{0x0000004000004202L,0x0000000000001000L});
	public static final BitSet FOLLOW_indicator_key_in_bind_variable3852 = new BitSet(new long[]{0x0000000000004200L});
	public static final BitSet FOLLOW_BINDVAR_in_bind_variable3858 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_COLON_in_bind_variable3862 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000002000000L});
	public static final BitSet FOLLOW_UNSIGNED_INTEGER_in_bind_variable3866 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_PERIOD_in_bind_variable3888 = new BitSet(new long[]{0x0000000010040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_general_element_part_in_bind_variable3890 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_general_element_part_in_general_element3956 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_PERIOD_in_general_element3966 = new BitSet(new long[]{0x0000000010040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_general_element_part_in_general_element3968 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_INTRODUCER_in_general_element_part4031 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_char_set_name_in_general_element_part4033 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_general_element_part4037 = new BitSet(new long[]{0x0000004040000002L});
	public static final BitSet FOLLOW_PERIOD_in_general_element_part4059 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_general_element_part4061 = new BitSet(new long[]{0x0000004040000002L});
	public static final BitSet FOLLOW_function_argument_in_general_element_part4066 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_INTRODUCER_in_table_element4138 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_char_set_name_in_table_element4140 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_table_element4144 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_PERIOD_in_table_element4147 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_table_element4149 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_timestamp_key_in_constant4196 = new BitSet(new long[]{0x0000000400007200L});
	public static final BitSet FOLLOW_quoted_string_in_constant4199 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
	public static final BitSet FOLLOW_bind_variable_in_constant4203 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
	public static final BitSet FOLLOW_at_key_in_constant4207 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_time_key_in_constant4209 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_zone_key_in_constant4211 = new BitSet(new long[]{0x0000000400003000L});
	public static final BitSet FOLLOW_quoted_string_in_constant4213 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_interval_key_in_constant4226 = new BitSet(new long[]{0x0000000410047200L,0x0000000000001000L});
	public static final BitSet FOLLOW_quoted_string_in_constant4229 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_bind_variable_in_constant4233 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_general_element_part_in_constant4237 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_day_key_in_constant4251 = new BitSet(new long[]{0x0000000040000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_hour_key_in_constant4255 = new BitSet(new long[]{0x0000000040000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_minute_key_in_constant4259 = new BitSet(new long[]{0x0000000040000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_second_key_in_constant4263 = new BitSet(new long[]{0x0000000040000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_LEFT_PAREN_in_constant4277 = new BitSet(new long[]{0x0000000000004200L,0x0000000000000000L,0x0000000002000000L});
	public static final BitSet FOLLOW_UNSIGNED_INTEGER_in_constant4280 = new BitSet(new long[]{0x0000000000008000L,0x0000000000004000L});
	public static final BitSet FOLLOW_bind_variable_in_constant4284 = new BitSet(new long[]{0x0000000000008000L,0x0000000000004000L});
	public static final BitSet FOLLOW_COMMA_in_constant4288 = new BitSet(new long[]{0x0000000000004200L,0x0000000000000000L,0x0000000002000000L});
	public static final BitSet FOLLOW_UNSIGNED_INTEGER_in_constant4291 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_bind_variable_in_constant4295 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_RIGHT_PAREN_in_constant4301 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_to_key_in_constant4316 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_day_key_in_constant4333 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_hour_key_in_constant4337 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_minute_key_in_constant4341 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_second_key_in_constant4345 = new BitSet(new long[]{0x0000000040000002L});
	public static final BitSet FOLLOW_LEFT_PAREN_in_constant4348 = new BitSet(new long[]{0x0000000000004200L,0x0000000000000000L,0x0000000002000000L});
	public static final BitSet FOLLOW_UNSIGNED_INTEGER_in_constant4351 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_bind_variable_in_constant4355 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_RIGHT_PAREN_in_constant4358 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_numeric_in_constant4385 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_date_key_in_constant4396 = new BitSet(new long[]{0x0000000400003000L});
	public static final BitSet FOLLOW_quoted_string_in_constant4398 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_quoted_string_in_constant4409 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_null_key_in_constant4420 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_true_key_in_constant4431 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_false_key_in_constant4442 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_dbtimezone_key_in_constant4453 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_sessiontimezone_key_in_constant4465 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_minvalue_key_in_constant4476 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_maxvalue_key_in_constant4487 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_default_key_in_constant4498 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_INTRODUCER_in_id4598 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_char_set_name_in_id4600 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_id4612 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_REGULAR_ID_in_id_expression4647 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DELIMITED_ID_in_id_expression4666 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_NOT_EQUAL_OP_in_not_equal_op4695 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_LESS_THAN_OP_in_not_equal_op4706 = new BitSet(new long[]{0x0000000002000000L});
	public static final BitSet FOLLOW_GREATER_THAN_OP_in_not_equal_op4708 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_EXCLAMATION_OPERATOR_PART_in_not_equal_op4719 = new BitSet(new long[]{0x0000000000200000L});
	public static final BitSet FOLLOW_EQUALS_OP_in_not_equal_op4721 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_CARRET_OPERATOR_PART_in_not_equal_op4732 = new BitSet(new long[]{0x0000000000200000L});
	public static final BitSet FOLLOW_EQUALS_OP_in_not_equal_op4734 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_GREATER_THAN_OR_EQUALS_OP_in_greater_than_or_equals_op4754 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_GREATER_THAN_OP_in_greater_than_or_equals_op4765 = new BitSet(new long[]{0x0000000000200000L});
	public static final BitSet FOLLOW_EQUALS_OP_in_greater_than_or_equals_op4767 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_LESS_THAN_OR_EQUALS_OP_in_less_than_or_equals_op4787 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_LESS_THAN_OP_in_less_than_or_equals_op4798 = new BitSet(new long[]{0x0000000000200000L});
	public static final BitSet FOLLOW_EQUALS_OP_in_less_than_or_equals_op4800 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_CONCATENATION_OP_in_concatenation_op4820 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_VERTICAL_BAR_in_concatenation_op4831 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_VERTICAL_BAR_in_concatenation_op4833 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_multiset_key_in_multiset_op4853 = new BitSet(new long[]{0x0000000000000000L,0x0100000000001000L,0x0000000000008000L});
	public static final BitSet FOLLOW_except_key_in_multiset_op4866 = new BitSet(new long[]{0x0000000000000002L,0x0000010000100000L});
	public static final BitSet FOLLOW_intersect_key_in_multiset_op4870 = new BitSet(new long[]{0x0000000000000002L,0x0000010000100000L});
	public static final BitSet FOLLOW_union_key_in_multiset_op4874 = new BitSet(new long[]{0x0000000000000002L,0x0000010000100000L});
	public static final BitSet FOLLOW_all_key_in_multiset_op4889 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_distinct_key_in_multiset_op4893 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_LEFT_PAREN_in_outer_join_sign4916 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
	public static final BitSet FOLLOW_PLUS_SIGN_in_outer_join_sign4918 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_RIGHT_PAREN_in_outer_join_sign4920 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_as_key_in_synpred1_PLSQLCommons419 = new BitSet(new long[]{0x0000000410043000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_in_synpred1_PLSQLCommons423 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_alias_quoted_string_in_synpred1_PLSQLCommons425 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred2_PLSQLCommons942 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_synpred2_PLSQLCommons944 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred3_PLSQLCommons1041 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_synpred3_PLSQLCommons1043 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred4_PLSQLCommons1202 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_synpred4_PLSQLCommons1204 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred5_PLSQLCommons1291 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_synpred5_PLSQLCommons1293 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred6_PLSQLCommons1447 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_synpred6_PLSQLCommons1449 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred7_PLSQLCommons1498 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_synpred7_PLSQLCommons1500 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred8_PLSQLCommons1549 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_synpred8_PLSQLCommons1551 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred9_PLSQLCommons1621 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_synpred9_PLSQLCommons1623 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred10_PLSQLCommons1674 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_synpred10_PLSQLCommons1676 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred11_PLSQLCommons1727 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_synpred11_PLSQLCommons1729 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred12_PLSQLCommons1798 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_synpred12_PLSQLCommons1800 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred13_PLSQLCommons2002 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_synpred13_PLSQLCommons2004 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred14_PLSQLCommons2090 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_synpred14_PLSQLCommons2092 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred15_PLSQLCommons2143 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_synpred15_PLSQLCommons2145 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred16_PLSQLCommons2237 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_synpred16_PLSQLCommons2239 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_tableview_name_in_synpred17_PLSQLCommons2634 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_PERIOD_in_synpred17_PLSQLCommons2636 = new BitSet(new long[]{0x0000000000000080L});
	public static final BitSet FOLLOW_ASTERISK_in_synpred17_PLSQLCommons2638 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_id_in_synpred18_PLSQLCommons2818 = new BitSet(new long[]{0x0000000000200000L});
	public static final BitSet FOLLOW_EQUALS_OP_in_synpred18_PLSQLCommons2820 = new BitSet(new long[]{0x0000000002000000L});
	public static final BitSet FOLLOW_GREATER_THAN_OP_in_synpred18_PLSQLCommons2822 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred19_PLSQLCommons3882 = new BitSet(new long[]{0x0000000010040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_general_element_part_in_synpred19_PLSQLCommons3884 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred20_PLSQLCommons3960 = new BitSet(new long[]{0x0000000010040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_general_element_part_in_synpred20_PLSQLCommons3962 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERIOD_in_synpred21_PLSQLCommons4053 = new BitSet(new long[]{0x0000000000040000L,0x0000000000001000L});
	public static final BitSet FOLLOW_id_expression_in_synpred21_PLSQLCommons4055 = new BitSet(new long[]{0x0000000000000002L});
}
